admin.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from django.contrib import admin
  2. from tickets.models import Attachment, Comment, Task, TaskList, TicketType
  3. from tickets.admin_utils import *
  4. from django.contrib.auth.models import Group
  5. from django.contrib.auth.admin import GroupAdmin
  6. @admin.register(Task)
  7. class TaskAdmin(admin.ModelAdmin):
  8. list_display = ("title", "task_list", "status", "priority", "due_date")
  9. list_filter = ("task_list",)
  10. ordering = ("priority",)
  11. search_fields = ("title",)
  12. @admin.register(TaskList)
  13. class TaskListAdmin(admin.ModelAdmin):
  14. actions = [add_default_tickets_list_admin]
  15. @admin.register(TicketType)
  16. class TicketTypeAdmin(admin.ModelAdmin):
  17. actions = [add_default_ticketstype_admin]
  18. admin.site.unregister(Group)
  19. @admin.register(Group)
  20. class GroupsAdmin(admin.ModelAdmin):
  21. actions = [add_default_group_admin]
  22. search_fields = ("name",)
  23. ordering = ("name",)
  24. filter_horizontal = ("permissions",)
  25. def formfield_for_manytomany(self, db_field, request=None, **kwargs):
  26. if db_field.name == "permissions":
  27. qs = kwargs.get("queryset", db_field.remote_field.model.objects)
  28. kwargs["queryset"] = qs.select_related("content_type")
  29. return super().formfield_for_manytomany(db_field, request=request, **kwargs)
  30. class CommentAdmin(admin.ModelAdmin):
  31. list_display = ("author", "date", "snippet")
  32. class AttachmentAdmin(admin.ModelAdmin):
  33. list_display = ("task", "added_by", "timestamp", "file")
  34. autocomplete_fields = ["added_by", "task"]
  35. admin.site.register(Comment, CommentAdmin)
  36. admin.site.add_action(export_to_csv)
  37. admin.site.register(Attachment)