From 3c20abeb4ce5a3d76b6d3f41044f986e158cae42 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 23 Sep 2026 07:50:48 -0700 Subject: [PATCH] Fix: indexing after document-added workflows signal (#14242) --- src/documents/apps.py | 1 - src/documents/tests/test_workflows.py | 37 +++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/documents/apps.py b/src/documents/apps.py index 8e8b4bc13..deb8a238d 100644 --- a/src/documents/apps.py +++ b/src/documents/apps.py @@ -26,7 +26,6 @@ class DocumentsConfig(AppConfig): document_consumption_finished.connect(set_document_type) document_consumption_finished.connect(set_tags) document_consumption_finished.connect(set_storage_path) - document_consumption_finished.connect(add_to_index) document_consumption_finished.connect(run_workflows_added) document_consumption_finished.connect(add_to_index) document_consumption_finished.connect(add_or_update_document_in_llm_index) diff --git a/src/documents/tests/test_workflows.py b/src/documents/tests/test_workflows.py index ee59f8de0..ccfeca588 100644 --- a/src/documents/tests/test_workflows.py +++ b/src/documents/tests/test_workflows.py @@ -69,7 +69,9 @@ from paperless_mail.models import MailAccount from paperless_mail.models import MailRule from paperless_testing.assertions import FileSystemAssertsMixin from paperless_testing.dirs import DirectoriesMixin +from paperless_testing.factories import DocumentFactory from paperless_testing.factories import UserFactory +from paperless_testing.permissions import grant_global from paperless_testing.permissions import grant_object @@ -1059,6 +1061,41 @@ class TestWorkflows( self.assertEqual(doc.correspondent, self.c2) self.assertEqual(doc.title, f"Doc created in {created.year}") + @pytest.mark.usefixtures("_search_index") + def test_document_added_workflow_indexes_final_title(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + filter_filename="*sample*", + ) + action = WorkflowAction.objects.create( + assign_title="Linked document", + assign_owner=self.user2, + ) + link_field = CustomField.objects.create( + name="Related documents", + data_type=CustomField.FieldDataType.DOCUMENTLINK, + ) + action.assign_custom_fields.add(link_field) + workflow = Workflow.objects.create(name="Link workflow", order=0) + workflow.triggers.add(trigger) + workflow.actions.add(action) + + doc = DocumentFactory.create() + document_consumption_finished.send(sender=self.__class__, document=doc) + + self.assertTrue(doc.custom_fields.filter(field=link_field).exists()) + doc.refresh_from_db() + self.assertEqual(doc.title, "Linked document") + + grant_global(self.user2, "view_document") + self.client.force_authenticate(user=self.user2) + response = self.client.get("/api/documents/?title_search=linked") + self.assertEqual(response.status_code, 200) + self.assertEqual( + [result["id"] for result in response.data["results"]], + [doc.pk], + ) + def test_document_added_no_match_filename(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED,