From b8659c1af3f2e17b5213c9703dcd701387ecbb92 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 1 Sep 2026 09:55:04 -0700 Subject: [PATCH] Fix: use root doc metadata for filename generation (#13893) --- src/documents/models.py | 6 +++- src/documents/tests/test_document_model.py | 34 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/documents/models.py b/src/documents/models.py index a4e608720..8dc3090f2 100644 --- a/src/documents/models.py +++ b/src/documents/models.py @@ -462,7 +462,11 @@ class Document(SoftDeleteModel, ModelWithOwner): # type: ignore[django-manager- """ Returns a sanitized filename for the document, not including any paths. """ - result = str(self) + # Root owns metadata for all versions + context_document = ( + self.root_document if self.root_document_id is not None else self + ) + result = str(context_document) if counter: result += f"_{counter:02}" diff --git a/src/documents/tests/test_document_model.py b/src/documents/tests/test_document_model.py index 8a58f4b13..7102db238 100644 --- a/src/documents/tests/test_document_model.py +++ b/src/documents/tests/test_document_model.py @@ -156,6 +156,40 @@ class TestDocument(TestCase): ) self.assertEqual(doc.get_public_filename(), "2020-12-25 test") + def test_version_file_name_uses_root_document_metadata(self) -> None: + root_correspondent = Correspondent.objects.create(name="Root correspondent") + version_correspondent = Correspondent.objects.create( + name="Version correspondent", + ) + root = Document.objects.create( + mime_type="application/pdf", + title="Root title", + created=date(2020, 12, 25), + correspondent=root_correspondent, + ) + version = Document.objects.create( + mime_type="application/pdf", + title="Version title", + created=date(1990, 1, 1), + correspondent=version_correspondent, + root_document=root, + version_index=1, + ) + + self.assertEqual( + version.get_public_filename(), + "2020-12-25 Root correspondent Root title.pdf", + ) + + root.title = "Updated root title" + root.save(update_fields=("title",)) + version.refresh_from_db() + + self.assertEqual( + version.get_public_filename(), + "2020-12-25 Root correspondent Updated root title.pdf", + ) + def test_suggestion_content_uses_latest_version_content_for_root_documents( self, ) -> None: