From f244442c65685628ab8d3db9fb605db99badca68 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 9 Jul 2026 08:35:05 -0700 Subject: [PATCH] Fixhancement: dont assign empty title in workflow with broken template (#13112) --- src/documents/tests/test_workflows.py | 39 +++++++++++++++++++++++++++ src/documents/workflows/mutations.py | 4 ++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/documents/tests/test_workflows.py b/src/documents/tests/test_workflows.py index 243f9609e..329ed0af0 100644 --- a/src/documents/tests/test_workflows.py +++ b/src/documents/tests/test_workflows.py @@ -1847,6 +1847,45 @@ class TestWorkflows( self.assertEqual(doc.title, "Doc {created_year]") + def test_document_added_malformed_title_template_falls_back(self) -> None: + """ + GIVEN: + - Existing workflow with added trigger type + - Assign title field is malformed Jinja2 syntax + WHEN: + - File that matches is added + THEN: + - Title assignment is skipped and the original title is kept + """ + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + filter_filename="*sample*", + ) + action = WorkflowAction.objects.create( + assign_title="Doc {{ unclosed", + ) + w = Workflow.objects.create( + name="Workflow 1", + order=0, + ) + w.triggers.add(trigger) + w.actions.add(action) + w.save() + + doc = Document.objects.create( + original_filename="sample.pdf", + title="sample test", + content="Hello world bar", + ) + + document_consumption_finished.send( + sender=self.__class__, + document=doc, + ) + + doc.refresh_from_db() + self.assertEqual(doc.title, "sample test") + def test_document_updated_workflow_ignores_version_documents(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, diff --git a/src/documents/workflows/mutations.py b/src/documents/workflows/mutations.py index 4945d00d5..7dbb317a8 100644 --- a/src/documents/workflows/mutations.py +++ b/src/documents/workflows/mutations.py @@ -40,7 +40,7 @@ def apply_assignment_to_document( if action.assign_title: try: - document.title = parse_w_workflow_placeholders( + title = parse_w_workflow_placeholders( action.assign_title, document.correspondent.name if document.correspondent else "", document.document_type.name if document.document_type else "", @@ -53,6 +53,8 @@ def apply_assignment_to_document( "", # no urls in titles document.pk, ) + if title: + document.title = title except Exception: # pragma: no cover logger.exception( f"Error occurred parsing title assignment '{action.assign_title}', falling back to original",