fc / apps /documents /admin /evidence_admin.py
jun2024's picture
Upload 2241 files
b4f2238 verified
Raw History Blame Contribute Delete
3.05 kB
"""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",
)