]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Merge admin
authorshamoon <4887959+shamoon@users.noreply.github.com>
Tue, 8 Apr 2025 23:48:01 +0000 (16:48 -0700)
committershamoon <4887959+shamoon@users.noreply.github.com>
Tue, 8 Apr 2025 23:48:01 +0000 (16:48 -0700)
src/documents/admin.py [deleted file]
src/documents/tests/test_admin.py
src/paperless/admin.py

diff --git a/src/documents/admin.py b/src/documents/admin.py
deleted file mode 100644 (file)
index 696b3a0..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-from django.conf import settings
-from django.contrib import admin
-from guardian.admin import GuardedModelAdmin
-
-from paperless.models import Correspondent
-from paperless.models import CustomField
-from paperless.models import CustomFieldInstance
-from paperless.models import Document
-from paperless.models import DocumentType
-from paperless.models import Note
-from paperless.models import PaperlessTask
-from paperless.models import SavedView
-from paperless.models import SavedViewFilterRule
-from paperless.models import ShareLink
-from paperless.models import StoragePath
-from paperless.models import Tag
-
-if settings.AUDIT_LOG_ENABLED:
-    from auditlog.admin import LogEntryAdmin
-    from auditlog.models import LogEntry
-
-
-class CorrespondentAdmin(GuardedModelAdmin):
-    list_display = ("name", "match", "matching_algorithm")
-    list_filter = ("matching_algorithm",)
-    list_editable = ("match", "matching_algorithm")
-
-
-class TagAdmin(GuardedModelAdmin):
-    list_display = ("name", "color", "match", "matching_algorithm")
-    list_filter = ("matching_algorithm",)
-    list_editable = ("color", "match", "matching_algorithm")
-    search_fields = ("color", "name")
-
-
-class DocumentTypeAdmin(GuardedModelAdmin):
-    list_display = ("name", "match", "matching_algorithm")
-    list_filter = ("matching_algorithm",)
-    list_editable = ("match", "matching_algorithm")
-
-
-class DocumentAdmin(GuardedModelAdmin):
-    search_fields = ("correspondent__name", "title", "content", "tags__name")
-    readonly_fields = (
-        "added",
-        "modified",
-        "mime_type",
-        "storage_type",
-        "filename",
-        "checksum",
-        "archive_filename",
-        "archive_checksum",
-        "original_filename",
-        "deleted_at",
-    )
-
-    list_display_links = ("title",)
-
-    list_display = ("id", "title", "mime_type", "filename", "archive_filename")
-
-    list_filter = (
-        ("mime_type"),
-        ("archive_serial_number", admin.EmptyFieldListFilter),
-        ("archive_filename", admin.EmptyFieldListFilter),
-    )
-
-    filter_horizontal = ("tags",)
-
-    ordering = ["-id"]
-
-    date_hierarchy = "created"
-
-    def has_add_permission(self, request):
-        return False
-
-    def created_(self, obj):
-        return obj.created.date().strftime("%Y-%m-%d")
-
-    created_.short_description = "Created"
-
-    def get_queryset(self, request):  # pragma: no cover
-        """
-        Include trashed documents
-        """
-        return Document.global_objects.all()
-
-    def delete_queryset(self, request, queryset):
-        from paperless import index
-
-        with index.open_index_writer() as writer:
-            for o in queryset:
-                index.remove_document(writer, o)
-
-        super().delete_queryset(request, queryset)
-
-    def delete_model(self, request, obj):
-        from paperless import index
-
-        index.remove_document_from_index(obj)
-        super().delete_model(request, obj)
-
-    def save_model(self, request, obj, form, change):
-        from paperless import index
-
-        index.add_or_update_document(obj)
-        super().save_model(request, obj, form, change)
-
-
-class RuleInline(admin.TabularInline):
-    model = SavedViewFilterRule
-
-
-class SavedViewAdmin(GuardedModelAdmin):
-    list_display = ("name", "owner")
-
-    inlines = [RuleInline]
-
-    def get_queryset(self, request):  # pragma: no cover
-        return super().get_queryset(request).select_related("owner")
-
-
-class StoragePathInline(admin.TabularInline):
-    model = StoragePath
-
-
-class StoragePathAdmin(GuardedModelAdmin):
-    list_display = ("name", "path", "match", "matching_algorithm")
-    list_filter = ("path", "matching_algorithm")
-    list_editable = ("path", "match", "matching_algorithm")
-
-
-class TaskAdmin(admin.ModelAdmin):
-    list_display = ("task_id", "task_file_name", "task_name", "date_done", "status")
-    list_filter = ("status", "date_done", "task_name")
-    search_fields = ("task_name", "task_id", "status", "task_file_name")
-    readonly_fields = (
-        "task_id",
-        "task_file_name",
-        "task_name",
-        "status",
-        "date_created",
-        "date_started",
-        "date_done",
-        "result",
-    )
-
-
-class NotesAdmin(GuardedModelAdmin):
-    list_display = ("user", "created", "note", "document")
-    list_filter = ("created", "user")
-    list_display_links = ("created",)
-    raw_id_fields = ("document",)
-    search_fields = ("document__title",)
-
-    def get_queryset(self, request):  # pragma: no cover
-        return (
-            super()
-            .get_queryset(request)
-            .select_related("user", "document__correspondent")
-        )
-
-
-class ShareLinksAdmin(GuardedModelAdmin):
-    list_display = ("created", "expiration", "document")
-    list_filter = ("created", "expiration", "owner")
-    list_display_links = ("created",)
-    raw_id_fields = ("document",)
-
-    def get_queryset(self, request):  # pragma: no cover
-        return super().get_queryset(request).select_related("document__correspondent")
-
-
-class CustomFieldsAdmin(GuardedModelAdmin):
-    fields = ("name", "created", "data_type")
-    readonly_fields = ("created", "data_type")
-    list_display = ("name", "created", "data_type")
-    list_filter = ("created", "data_type")
-
-
-class CustomFieldInstancesAdmin(GuardedModelAdmin):
-    fields = ("field", "document", "created", "value")
-    readonly_fields = ("field", "document", "created", "value")
-    list_display = ("field", "document", "value", "created")
-    search_fields = ("document__title",)
-    list_filter = ("created", "field")
-
-    def get_queryset(self, request):  # pragma: no cover
-        return (
-            super()
-            .get_queryset(request)
-            .select_related("field", "document__correspondent")
-        )
-
-
-admin.site.register(Correspondent, CorrespondentAdmin)
-admin.site.register(Tag, TagAdmin)
-admin.site.register(DocumentType, DocumentTypeAdmin)
-admin.site.register(Document, DocumentAdmin)
-admin.site.register(SavedView, SavedViewAdmin)
-admin.site.register(StoragePath, StoragePathAdmin)
-admin.site.register(PaperlessTask, TaskAdmin)
-admin.site.register(Note, NotesAdmin)
-admin.site.register(ShareLink, ShareLinksAdmin)
-admin.site.register(CustomField, CustomFieldsAdmin)
-admin.site.register(CustomFieldInstance, CustomFieldInstancesAdmin)
-
-if settings.AUDIT_LOG_ENABLED:
-
-    class LogEntryAUDIT(LogEntryAdmin):
-        def has_delete_permission(self, request, obj=None):
-            return False
-
-    admin.site.unregister(LogEntry)
-    admin.site.register(LogEntry, LogEntryAUDIT)
index d846f9ba84180a7e0d0c1ccab555dc143fbb2cff..bcd9b3ff18688da3c1366987f1d8ec492109137a 100644 (file)
@@ -5,9 +5,9 @@ from django.contrib.auth.models import User
 from django.test import TestCase
 from django.utils import timezone
 
-from documents.admin import DocumentAdmin
 from documents.tests.utils import DirectoriesMixin
 from paperless import index
+from paperless.admin import DocumentAdmin
 from paperless.admin import PaperlessUserAdmin
 from paperless.models import Document
 
index 89575fe2e7a5622e21208783d9de0f01a1f8a7aa..ab8c738e4aad7ac8dd1d6378fa8a0ce9aa2818f2 100644 (file)
@@ -1,7 +1,26 @@
 from django import forms
+from django.conf import settings
 from django.contrib import admin
 from django.contrib.auth.admin import UserAdmin
 from django.contrib.auth.models import User
+from guardian.admin import GuardedModelAdmin
+
+from paperless.models import Correspondent
+from paperless.models import CustomField
+from paperless.models import CustomFieldInstance
+from paperless.models import Document
+from paperless.models import DocumentType
+from paperless.models import Note
+from paperless.models import PaperlessTask
+from paperless.models import SavedView
+from paperless.models import SavedViewFilterRule
+from paperless.models import ShareLink
+from paperless.models import StoragePath
+from paperless.models import Tag
+
+if settings.AUDIT_LOG_ENABLED:
+    from auditlog.admin import LogEntryAdmin
+    from auditlog.models import LogEntry
 
 
 class PaperlessUserForm(forms.ModelForm):
@@ -51,3 +70,197 @@ class PaperlessUserAdmin(UserAdmin):
 
 admin.site.unregister(User)
 admin.site.register(User, PaperlessUserAdmin)
+
+
+class CorrespondentAdmin(GuardedModelAdmin):
+    list_display = ("name", "match", "matching_algorithm")
+    list_filter = ("matching_algorithm",)
+    list_editable = ("match", "matching_algorithm")
+
+
+class TagAdmin(GuardedModelAdmin):
+    list_display = ("name", "color", "match", "matching_algorithm")
+    list_filter = ("matching_algorithm",)
+    list_editable = ("color", "match", "matching_algorithm")
+    search_fields = ("color", "name")
+
+
+class DocumentTypeAdmin(GuardedModelAdmin):
+    list_display = ("name", "match", "matching_algorithm")
+    list_filter = ("matching_algorithm",)
+    list_editable = ("match", "matching_algorithm")
+
+
+class DocumentAdmin(GuardedModelAdmin):
+    search_fields = ("correspondent__name", "title", "content", "tags__name")
+    readonly_fields = (
+        "added",
+        "modified",
+        "mime_type",
+        "storage_type",
+        "filename",
+        "checksum",
+        "archive_filename",
+        "archive_checksum",
+        "original_filename",
+        "deleted_at",
+    )
+
+    list_display_links = ("title",)
+
+    list_display = ("id", "title", "mime_type", "filename", "archive_filename")
+
+    list_filter = (
+        ("mime_type"),
+        ("archive_serial_number", admin.EmptyFieldListFilter),
+        ("archive_filename", admin.EmptyFieldListFilter),
+    )
+
+    filter_horizontal = ("tags",)
+
+    ordering = ["-id"]
+
+    date_hierarchy = "created"
+
+    def has_add_permission(self, request):
+        return False
+
+    def created_(self, obj):
+        return obj.created.date().strftime("%Y-%m-%d")
+
+    created_.short_description = "Created"
+
+    def get_queryset(self, request):  # pragma: no cover
+        """
+        Include trashed documents
+        """
+        return Document.global_objects.all()
+
+    def delete_queryset(self, request, queryset):
+        from paperless import index
+
+        with index.open_index_writer() as writer:
+            for o in queryset:
+                index.remove_document(writer, o)
+
+        super().delete_queryset(request, queryset)
+
+    def delete_model(self, request, obj):
+        from paperless import index
+
+        index.remove_document_from_index(obj)
+        super().delete_model(request, obj)
+
+    def save_model(self, request, obj, form, change):
+        from paperless import index
+
+        index.add_or_update_document(obj)
+        super().save_model(request, obj, form, change)
+
+
+class RuleInline(admin.TabularInline):
+    model = SavedViewFilterRule
+
+
+class SavedViewAdmin(GuardedModelAdmin):
+    list_display = ("name", "owner")
+
+    inlines = [RuleInline]
+
+    def get_queryset(self, request):  # pragma: no cover
+        return super().get_queryset(request).select_related("owner")
+
+
+class StoragePathInline(admin.TabularInline):
+    model = StoragePath
+
+
+class StoragePathAdmin(GuardedModelAdmin):
+    list_display = ("name", "path", "match", "matching_algorithm")
+    list_filter = ("path", "matching_algorithm")
+    list_editable = ("path", "match", "matching_algorithm")
+
+
+class TaskAdmin(admin.ModelAdmin):
+    list_display = ("task_id", "task_file_name", "task_name", "date_done", "status")
+    list_filter = ("status", "date_done", "task_name")
+    search_fields = ("task_name", "task_id", "status", "task_file_name")
+    readonly_fields = (
+        "task_id",
+        "task_file_name",
+        "task_name",
+        "status",
+        "date_created",
+        "date_started",
+        "date_done",
+        "result",
+    )
+
+
+class NotesAdmin(GuardedModelAdmin):
+    list_display = ("user", "created", "note", "document")
+    list_filter = ("created", "user")
+    list_display_links = ("created",)
+    raw_id_fields = ("document",)
+    search_fields = ("document__title",)
+
+    def get_queryset(self, request):  # pragma: no cover
+        return (
+            super()
+            .get_queryset(request)
+            .select_related("user", "document__correspondent")
+        )
+
+
+class ShareLinksAdmin(GuardedModelAdmin):
+    list_display = ("created", "expiration", "document")
+    list_filter = ("created", "expiration", "owner")
+    list_display_links = ("created",)
+    raw_id_fields = ("document",)
+
+    def get_queryset(self, request):  # pragma: no cover
+        return super().get_queryset(request).select_related("document__correspondent")
+
+
+class CustomFieldsAdmin(GuardedModelAdmin):
+    fields = ("name", "created", "data_type")
+    readonly_fields = ("created", "data_type")
+    list_display = ("name", "created", "data_type")
+    list_filter = ("created", "data_type")
+
+
+class CustomFieldInstancesAdmin(GuardedModelAdmin):
+    fields = ("field", "document", "created", "value")
+    readonly_fields = ("field", "document", "created", "value")
+    list_display = ("field", "document", "value", "created")
+    search_fields = ("document__title",)
+    list_filter = ("created", "field")
+
+    def get_queryset(self, request):  # pragma: no cover
+        return (
+            super()
+            .get_queryset(request)
+            .select_related("field", "document__correspondent")
+        )
+
+
+admin.site.register(Correspondent, CorrespondentAdmin)
+admin.site.register(Tag, TagAdmin)
+admin.site.register(DocumentType, DocumentTypeAdmin)
+admin.site.register(Document, DocumentAdmin)
+admin.site.register(SavedView, SavedViewAdmin)
+admin.site.register(StoragePath, StoragePathAdmin)
+admin.site.register(PaperlessTask, TaskAdmin)
+admin.site.register(Note, NotesAdmin)
+admin.site.register(ShareLink, ShareLinksAdmin)
+admin.site.register(CustomField, CustomFieldsAdmin)
+admin.site.register(CustomFieldInstance, CustomFieldInstancesAdmin)
+
+if settings.AUDIT_LOG_ENABLED:
+
+    class LogEntryAUDIT(LogEntryAdmin):
+        def has_delete_permission(self, request, obj=None):
+            return False
+
+    admin.site.unregister(LogEntry)
+    admin.site.register(LogEntry, LogEntryAUDIT)