"""Django admin configuration.""" import logging from typing import Any, ClassVar from django.contrib import admin from django.utils.translation import gettext_lazy as _ from apps.documents.models import EvidenceList from .evidence import EvidenceItemInline, EvidenceListForm from .evidence.mixins import EvidenceListAdminActionsMixin, EvidenceListAdminSaveMixin, EvidenceListAdminViewsMixin logger = logging.getLogger(__name__) @admin.register(EvidenceList) class EvidenceListAdmin( EvidenceListAdminViewsMixin, EvidenceListAdminActionsMixin, EvidenceListAdminSaveMixin, admin.ModelAdmin, ): form = EvidenceListForm list_display: tuple[Any, ...] = ( "title", "case_display", "list_type", "item_count_display", "order_range_display", "total_pages_display", "page_range_display", "export_version", "has_merged_pdf_display", "actions_display", "updated_at", ) list_filter: tuple[Any, ...] = ("case", "list_type") search_fields: tuple[Any, ...] = ("title", "case__name") ordering: ClassVar = ["case", "order"] autocomplete_fields: tuple[Any, ...] = ("export_template",) readonly_fields: tuple[Any, ...] = ( "list_type", "order", "page_range_display", "order_range_display", "total_pages", "merged_pdf", "created_by", "created_at", "updated_at", ) fieldsets: tuple[Any, ...] = ( (None, {"fields": ("case",)}), ( _("自动计算信息"), { "fields": ("list_type", "order_range_display", "total_pages", "page_range_display"), "description": _("以下信息由系统自动计算,无需手动填写."), }, ), ( _("合并PDF"), { "fields": ("merged_pdf",), "description": _("点击列表页的「合并」按钮将证据文件合并为PDF."), }, ), ( _("导出设置"), { "fields": ("export_version", "export_template"), "description": _("导出版本号用于文件名控制,请手动修改.选择导出模板后,导出清单时将使用该模板格式."), "classes": ("evidence-export-section",), }, ), ( _("系统信息"), { "fields": ("created_by", "created_at", "updated_at"), "classes": ("collapse",), }, ), ) inlines: ClassVar = [EvidenceItemInline] actions: ClassVar = ["merge_pdfs", "export_list_word"] list_select_related: tuple[Any, ...] = ("case", "created_by") class Media: css: ClassVar = {"all": ("documents/css/evidence_admin.css",)} js: tuple[Any, ...] = ( "documents/js/evidence_sortable.js", "documents/js/evidence_merge.js", "documents/js/evidence_list_type.js", )