Files
customerTicket/apps/tickets/admin.py
T

79 lines
3.5 KiB
Python

from django.contrib import admin
from .models import DispatchResponseControl,GroupDispatch,SLAConfig,Ticket,TicketAccessGrant,TicketCategory,TicketEvent,TicketReadState,TicketTag
@admin.register(Ticket)
class TicketAdmin(admin.ModelAdmin):
list_display=("ticket_number","subject","owning_unit","delivery_type","status","priority","owner","last_activity_at")
list_filter=("owning_unit","assigned_unit","delivery_type","status","priority","category","tags")
search_fields=("ticket_number","subject","customer__mobile","customer__customer_profile__organization_name")
filter_horizontal=("tags",)
def get_readonly_fields(self, request, obj=None):
if obj and obj.group_dispatch_id and DispatchResponseControl.objects.filter(dispatch_id=obj.group_dispatch_id).exists():
return ("group_dispatch", "delivery_type", "customer", "created_by")
return super().get_readonly_fields(request, obj)
def get_queryset(self, request):
from .dispatch_responses import managed_ticket_q
return super().get_queryset(request).filter(managed_ticket_q(request.user)).distinct()
class DispatchTicketInline(admin.TabularInline):
model = Ticket
extra = 0
fields = ("ticket_number", "customer", "status", "last_activity_at")
readonly_fields = fields
can_delete = False
def has_add_permission(self, request, obj=None):
return False
@admin.register(GroupDispatch)
class GroupDispatchAdmin(admin.ModelAdmin):
list_display = ("subject", "unit", "contact_group", "status", "recipient_count", "dispatched_at")
list_filter = ("unit", "status", "contact_group")
search_fields = ("subject", "created_by__username")
readonly_fields = ("recipient_count", "dispatched_at")
inlines = (DispatchTicketInline,)
def get_readonly_fields(self, request, obj=None):
fields = super().get_readonly_fields(request, obj)
if obj and DispatchResponseControl.objects.filter(dispatch_id=obj.pk).exists():
return fields + ("unit", "operation_type", "created_by", "contact_group")
return fields
def get_queryset(self, request):
from .policies import DispatchPolicy
from django.db.models import Q
return super().get_queryset(request).filter(Q(response_control__isnull=True) | Q(pk__in=DispatchPolicy.visible_dispatches(request.user)))
@admin.register(DispatchResponseControl)
class DispatchResponseControlAdmin(admin.ModelAdmin):
list_display = ("dispatch", "mode", "notify_sms", "opened_at", "opened_by")
readonly_fields = tuple(field.name for field in DispatchResponseControl._meta.fields)
def get_queryset(self, request):
from .policies import DispatchPolicy
return super().get_queryset(request).filter(dispatch__in=DispatchPolicy.visible_dispatches(request.user))
def has_add_permission(self, request):
return False
def has_change_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
@admin.register(TicketCategory)
class TicketCategoryAdmin(admin.ModelAdmin):
list_display=("title","unit","sort_order","show_in_customer_form","is_active")
list_filter=("unit","show_in_customer_form","is_active")
search_fields=("title","description","search_keywords","unit__name","unit__search_keywords")
list_editable=("is_active","show_in_customer_form","sort_order")
admin.site.register([SLAConfig,TicketAccessGrant,TicketEvent,TicketReadState,TicketTag])