]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fix: correct all results with whoosh queries (#9331)
authorshamoon <4887959+shamoon@users.noreply.github.com>
Fri, 7 Mar 2025 21:31:23 +0000 (13:31 -0800)
committerGitHub <noreply@github.com>
Fri, 7 Mar 2025 21:31:23 +0000 (13:31 -0800)
src/paperless/views.py

index fdd7c21a49e1c8f8ab575609c90e15c385e9fc9f..050bb3f612955b2dbdd8b1283172eab45c7a2783 100644 (file)
@@ -32,6 +32,7 @@ from rest_framework.permissions import IsAuthenticated
 from rest_framework.response import Response
 from rest_framework.viewsets import ModelViewSet
 
+from documents.index import DelayedQuery
 from documents.permissions import PaperlessObjectPermissions
 from paperless.filters import GroupFilterSet
 from paperless.filters import UserFilterSet
@@ -66,17 +67,17 @@ class StandardPagination(PageNumberPagination):
         )
 
     def get_all_result_ids(self):
-        ids = []
-        if hasattr(self.page.paginator.object_list, "saved_results"):
-            results_page = self.page.paginator.object_list.saved_results[0]
-            if results_page is not None:
-                for i in range(len(results_page.results.docs())):
-                    try:
-                        fields = results_page.results.fields(i)
-                        if "id" in fields:
-                            ids.append(fields["id"])
-                    except Exception:
-                        pass
+        query = self.page.paginator.object_list
+        if isinstance(query, DelayedQuery):
+            try:
+                ids = [
+                    query.searcher.ixreader.stored_fields(
+                        doc_num,
+                    )["id"]
+                    for doc_num in query.saved_results.get(0).results.docs()
+                ]
+            except Exception:
+                pass
         else:
             ids = self.page.paginator.object_list.values_list("pk", flat=True)
         return ids