File size: 3,045 Bytes
b4f2238
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
"""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",
        )