mirror of
https://github.com/django-helpdesk/django-helpdesk.git
synced 2025-06-03 00:15:46 +02:00
162 lines
4.2 KiB
Python
162 lines
4.2 KiB
Python
from django.contrib import admin
|
|
from django.utils.translation import gettext_lazy as _
|
|
from helpdesk import settings as helpdesk_settings
|
|
from helpdesk.models import (
|
|
Checklist,
|
|
ChecklistTask,
|
|
ChecklistTemplate,
|
|
CustomField,
|
|
EmailTemplate,
|
|
EscalationExclusion,
|
|
FollowUp,
|
|
FollowUpAttachment,
|
|
IgnoreEmail,
|
|
KBIAttachment,
|
|
PreSetReply,
|
|
Queue,
|
|
Ticket,
|
|
TicketChange,
|
|
)
|
|
|
|
|
|
if helpdesk_settings.HELPDESK_KB_ENABLED:
|
|
from helpdesk.models import KBCategory, KBItem
|
|
|
|
|
|
@admin.register(Queue)
|
|
class QueueAdmin(admin.ModelAdmin):
|
|
list_display = ("title", "slug", "email_address", "locale", "time_spent")
|
|
prepopulated_fields = {"slug": ("title",)}
|
|
|
|
def time_spent(self, q):
|
|
if q.dedicated_time:
|
|
return "{} / {}".format(q.time_spent, q.dedicated_time)
|
|
elif q.time_spent:
|
|
return q.time_spent
|
|
else:
|
|
return "-"
|
|
|
|
def delete_queryset(self, request, queryset):
|
|
for queue in queryset:
|
|
queue.delete()
|
|
|
|
|
|
@admin.register(Ticket)
|
|
class TicketAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"title",
|
|
"status",
|
|
"assigned_to",
|
|
"queue",
|
|
"hidden_submitter_email",
|
|
"time_spent",
|
|
)
|
|
date_hierarchy = "created"
|
|
list_filter = ("queue", "assigned_to", "status")
|
|
search_fields = ("id", "title")
|
|
|
|
def hidden_submitter_email(self, ticket):
|
|
if ticket.submitter_email:
|
|
username, domain = ticket.submitter_email.split("@")
|
|
username = username[:2] + "*" * (len(username) - 2)
|
|
domain = domain[:1] + "*" * (len(domain) - 2) + domain[-1:]
|
|
return "%s@%s" % (username, domain)
|
|
else:
|
|
return ticket.submitter_email
|
|
|
|
hidden_submitter_email.short_description = _("Submitter E-Mail")
|
|
|
|
def time_spent(self, ticket):
|
|
return ticket.time_spent
|
|
|
|
|
|
class TicketChangeInline(admin.StackedInline):
|
|
model = TicketChange
|
|
extra = 0
|
|
|
|
|
|
class FollowUpAttachmentInline(admin.StackedInline):
|
|
model = FollowUpAttachment
|
|
extra = 0
|
|
|
|
|
|
class KBIAttachmentInline(admin.StackedInline):
|
|
model = KBIAttachment
|
|
extra = 0
|
|
|
|
|
|
@admin.register(FollowUp)
|
|
class FollowUpAdmin(admin.ModelAdmin):
|
|
inlines = [TicketChangeInline, FollowUpAttachmentInline]
|
|
list_display = (
|
|
"ticket_get_ticket_for_url",
|
|
"title",
|
|
"date",
|
|
"ticket",
|
|
"user",
|
|
"new_status",
|
|
"time_spent",
|
|
)
|
|
list_filter = ("user", "date", "new_status")
|
|
|
|
def ticket_get_ticket_for_url(self, obj):
|
|
return obj.ticket.ticket_for_url
|
|
|
|
ticket_get_ticket_for_url.short_description = _("Slug")
|
|
|
|
|
|
if helpdesk_settings.HELPDESK_KB_ENABLED:
|
|
|
|
@admin.register(KBItem)
|
|
class KBItemAdmin(admin.ModelAdmin):
|
|
list_display = ("category", "title", "last_updated", "team", "order", "enabled")
|
|
inlines = [KBIAttachmentInline]
|
|
readonly_fields = ("voted_by", "downvoted_by")
|
|
|
|
list_display_links = ("title",)
|
|
|
|
if helpdesk_settings.HELPDESK_KB_ENABLED:
|
|
|
|
@admin.register(KBCategory)
|
|
class KBCategoryAdmin(admin.ModelAdmin):
|
|
list_display = ("name", "title", "slug", "public")
|
|
|
|
|
|
@admin.register(CustomField)
|
|
class CustomFieldAdmin(admin.ModelAdmin):
|
|
list_display = ("name", "label", "data_type")
|
|
|
|
|
|
@admin.register(EmailTemplate)
|
|
class EmailTemplateAdmin(admin.ModelAdmin):
|
|
list_display = ("template_name", "heading", "locale")
|
|
list_filter = ("locale",)
|
|
|
|
|
|
@admin.register(IgnoreEmail)
|
|
class IgnoreEmailAdmin(admin.ModelAdmin):
|
|
list_display = ("name", "queue_list", "email_address", "keep_in_mailbox")
|
|
|
|
|
|
@admin.register(ChecklistTemplate)
|
|
class ChecklistTemplateAdmin(admin.ModelAdmin):
|
|
list_display = ("name", "task_list")
|
|
search_fields = ("name", "task_list")
|
|
|
|
|
|
class ChecklistTaskInline(admin.TabularInline):
|
|
model = ChecklistTask
|
|
|
|
|
|
@admin.register(Checklist)
|
|
class ChecklistAdmin(admin.ModelAdmin):
|
|
list_display = ("name", "ticket")
|
|
search_fields = ("name", "ticket__id", "ticket__title")
|
|
autocomplete_fields = ("ticket",)
|
|
list_select_related = ("ticket",)
|
|
inlines = (ChecklistTaskInline,)
|
|
|
|
|
|
admin.site.register(PreSetReply)
|
|
admin.site.register(EscalationExclusion)
|