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)