]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Add head_version
authorshamoon <4887959+shamoon@users.noreply.github.com>
Wed, 26 Feb 2025 17:25:35 +0000 (09:25 -0800)
committershamoon <4887959+shamoon@users.noreply.github.com>
Sat, 20 Sep 2025 17:09:31 +0000 (10:09 -0700)
src/documents/migrations/1064_document_head_version.py [new file with mode: 0644]
src/documents/models.py
src/documents/serialisers.py
src/documents/views.py

diff --git a/src/documents/migrations/1064_document_head_version.py b/src/documents/migrations/1064_document_head_version.py
new file mode 100644 (file)
index 0000000..d5ac495
--- /dev/null
@@ -0,0 +1,26 @@
+# Generated by Django 5.1.6 on 2025-02-26 17:08
+
+import django.db.models.deletion
+from django.db import migrations
+from django.db import models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("documents", "1063_alter_workflowactionwebhook_url_and_more"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="document",
+            name="head_version",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="versions",
+                to="documents.document",
+                verbose_name="head version of document",
+            ),
+        ),
+    ]
index 8d542cd8c99fd4538b07cb42c94de9236e53faad..12216194d319327815f6ded09dc1fd0e966a353c 100644 (file)
@@ -313,6 +313,15 @@ class Document(SoftDeleteModel, ModelWithOwner):
         ),
     )
 
+    head_version = models.ForeignKey(
+        "self",
+        blank=True,
+        null=True,
+        related_name="versions",
+        on_delete=models.CASCADE,
+        verbose_name=_("head version of document"),
+    )
+
     class Meta:
         ordering = ("-created",)
         verbose_name = _("document")
index 1608a0e4e12383fe07b4f06541b529c12d9cdb3f..db58b29bb50480716fba8fcc39acd307d109d880 100644 (file)
@@ -1184,6 +1184,8 @@ class DocumentSerializer(
             "remove_inbox_tags",
             "page_count",
             "mime_type",
+            "head_version",
+            "versions",
         )
         list_serializer_class = OwnedObjectListSerializer
 
index 86eab92e384c205b8cf428a74f35be1c2307f054..bb25d608b82e75c82da6aa8f5678d9b3953b6217 100644 (file)
@@ -567,7 +567,7 @@ class DocumentViewSet(
     GenericViewSet,
 ):
     model = Document
-    queryset = Document.objects.annotate(num_notes=Count("notes"))
+    queryset = Document.objects.all()
     serializer_class = DocumentSerializer
     pagination_class = StandardPagination
     permission_classes = (IsAuthenticated, PaperlessObjectPermissions)
@@ -596,7 +596,8 @@ class DocumentViewSet(
 
     def get_queryset(self):
         return (
-            Document.objects.distinct()
+            Document.objects.filter(head_version__isnull=True)
+            .distinct()
             .order_by("-created")
             .annotate(num_notes=Count("notes"))
             .select_related("correspondent", "storage_path", "document_type", "owner")