davidtran999 commited on
Commit
8604302
·
verified ·
1 Parent(s): 57b3892

Upload backend/core/admin.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. backend/core/admin.py +90 -0
backend/core/admin.py ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.contrib import admin
2
+ from .models import (
3
+ Procedure,
4
+ Fine,
5
+ Office,
6
+ Advisory,
7
+ Synonym,
8
+ LegalDocument,
9
+ LegalSection,
10
+ LegalDocumentImage,
11
+ IngestionJob,
12
+ )
13
+
14
+ @admin.register(Procedure)
15
+ class ProcedureAdmin(admin.ModelAdmin):
16
+ list_display = ("id", "title", "domain", "level", "updated_at")
17
+ search_fields = ("title", "conditions", "dossier")
18
+ list_filter = ("domain", "level")
19
+
20
+ @admin.register(Fine)
21
+ class FineAdmin(admin.ModelAdmin):
22
+ list_display = ("id", "code", "name", "decree")
23
+ search_fields = ("code", "name", "article")
24
+
25
+ @admin.register(Office)
26
+ class OfficeAdmin(admin.ModelAdmin):
27
+ list_display = ("id", "unit_name", "district", "phone")
28
+ search_fields = ("unit_name", "address", "district")
29
+ list_filter = ("district",)
30
+
31
+ @admin.register(Advisory)
32
+ class AdvisoryAdmin(admin.ModelAdmin):
33
+ list_display = ("id", "title", "published_at")
34
+ search_fields = ("title", "summary")
35
+
36
+ @admin.register(Synonym)
37
+ class SynonymAdmin(admin.ModelAdmin):
38
+ list_display = ("id", "keyword", "alias")
39
+ search_fields = ("keyword", "alias")
40
+
41
+
42
+ @admin.register(LegalDocument)
43
+ class LegalDocumentAdmin(admin.ModelAdmin):
44
+ list_display = ("id", "code", "title", "doc_type", "issued_at")
45
+ search_fields = ("code", "title", "summary", "issued_by")
46
+ list_filter = ("doc_type", "issued_by")
47
+
48
+
49
+ @admin.register(LegalSection)
50
+ class LegalSectionAdmin(admin.ModelAdmin):
51
+ list_display = ("id", "document", "section_code", "level", "order")
52
+ list_filter = ("level",)
53
+ search_fields = ("section_code", "section_title", "content")
54
+ autocomplete_fields = ("document",)
55
+
56
+
57
+ @admin.register(LegalDocumentImage)
58
+ class LegalDocumentImageAdmin(admin.ModelAdmin):
59
+ list_display = ("id", "document", "page_number", "width", "height")
60
+ search_fields = ("document__code", "description")
61
+ list_filter = ("page_number",)
62
+
63
+
64
+ # Optional import - celery may not be available in all environments
65
+ # Catch all exceptions to handle circular import issues
66
+ try:
67
+ from .tasks import process_ingestion_job
68
+ except (ImportError, AttributeError, Exception):
69
+ process_ingestion_job = None
70
+
71
+
72
+ @admin.register(IngestionJob)
73
+ class IngestionJobAdmin(admin.ModelAdmin):
74
+ list_display = ("id", "code", "status", "filename", "created_at", "finished_at")
75
+ search_fields = ("code", "filename", "error_message")
76
+ list_filter = ("status", "created_at")
77
+ autocomplete_fields = ("document",)
78
+ readonly_fields = ("storage_path", "error_message", "stats")
79
+ actions = ["retry_jobs"]
80
+
81
+ @admin.action(description="Retry selected ingestion jobs")
82
+ def retry_jobs(self, request, queryset):
83
+ for job in queryset:
84
+ job.status = job.STATUS_PENDING
85
+ job.progress = 0
86
+ job.error_message = ""
87
+ job.save(update_fields=["status", "progress", "error_message", "updated_at"])
88
+ if process_ingestion_job is not None:
89
+ process_ingestion_job.delay(str(job.id))
90
+ self.message_user(request, f"Đã requeue {queryset.count()} tác vụ")