]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fix note sorting, testing, bump search index version
authorshamoon <4887959+shamoon@users.noreply.github.com>
Thu, 4 May 2023 09:07:30 +0000 (02:07 -0700)
committershamoon <4887959+shamoon@users.noreply.github.com>
Thu, 4 May 2023 09:07:48 +0000 (02:07 -0700)
docker/docker-prepare.sh
src/documents/index.py
src/documents/tests/test_api.py

index d6eab42815c3eec5a00b11f479f9b2730f491581..9cf41d42c51ccf26eb69c74626a63026350e51e5 100755 (executable)
@@ -80,7 +80,7 @@ django_checks() {
 
 search_index() {
 
-       local -r index_version=4
+       local -r index_version=5
        local -r index_version_file=${DATA_DIR}/.index_version
 
        if [[ (! -f "${index_version_file}") || $(<"${index_version_file}") != "$index_version" ]]; then
index 594096bfaa9a8b18a744d40fbce1ead40479c373..0b0493514dbac7f403657fde4501fe893314e0b6 100644 (file)
@@ -54,6 +54,7 @@ def get_schema():
         path_id=NUMERIC(),
         has_path=BOOLEAN(),
         notes=TEXT(),
+        num_notes=NUMERIC(sortable=True, signed=False),
         owner=TEXT(),
         owner_id=NUMERIC(),
         has_owner=BOOLEAN(),
@@ -138,6 +139,7 @@ def update_document(writer: AsyncWriter, doc: Document):
         path_id=doc.storage_path.id if doc.storage_path else None,
         has_path=doc.storage_path is not None,
         notes=notes,
+        num_notes=len(notes),
         owner=doc.owner.username if doc.owner else None,
         owner_id=doc.owner.id if doc.owner else None,
         has_owner=doc.owner is not None,
@@ -266,6 +268,7 @@ class DelayedQuery:
             "correspondent__name": "correspondent",
             "document_type__name": "type",
             "archive_serial_number": "asn",
+            "num_notes": "num_notes",
         }
 
         if field.startswith("-"):
index b9989ee868bb53d9c5f9efff942fe5532aac992a..e8c6dee7c4b4248cbaf1c8416f4fa303a3736c52 100644 (file)
@@ -1150,6 +1150,8 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
         self.assertEqual(r.data["count"], 4)
 
     def test_search_sorting(self):
+        u1 = User.objects.create_user("user1")
+        u2 = User.objects.create_user("user2")
         c1 = Correspondent.objects.create(name="corres Ax")
         c2 = Correspondent.objects.create(name="corres Cx")
         c3 = Correspondent.objects.create(name="corres Bx")
@@ -1159,6 +1161,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
             content="test",
             archive_serial_number=2,
             title="3",
+            owner=u1,
         )
         d2 = Document.objects.create(
             checksum="2",
@@ -1166,6 +1169,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
             content="test",
             archive_serial_number=3,
             title="2",
+            owner=u2,
         )
         d3 = Document.objects.create(
             checksum="3",
@@ -1174,6 +1178,21 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
             archive_serial_number=1,
             title="1",
         )
+        Note.objects.create(
+            note="This is a note.",
+            document=d1,
+            user=u1,
+        )
+        Note.objects.create(
+            note="This is a note.",
+            document=d1,
+            user=u1,
+        )
+        Note.objects.create(
+            note="This is a note.",
+            document=d3,
+            user=u1,
+        )
 
         with AsyncWriter(index.open_index()) as writer:
             for doc in Document.objects.all():
@@ -1202,6 +1221,14 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
             search_query("&ordering=-correspondent__name"),
             [d2.id, d3.id, d1.id],
         )
+        self.assertListEqual(
+            search_query("&ordering=num_notes"),
+            [d2.id, d3.id, d1.id],
+        )
+        self.assertListEqual(
+            search_query("&ordering=-num_notes"),
+            [d1.id, d3.id, d2.id],
+        )
 
     def test_statistics(self):
         doc1 = Document.objects.create(