From 3c7a593f631bdc3eeab2e3bc9b87e37088fec3bc Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Wed, 19 Aug 2026 21:54:51 +0200 Subject: [PATCH] feat(templates): carry content field requirements --- src/govoplan_core/core/templates.py | 1 + tests/test_template_contract.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/govoplan_core/core/templates.py b/src/govoplan_core/core/templates.py index ad4dd1e..1c7d453 100644 --- a/src/govoplan_core/core/templates.py +++ b/src/govoplan_core/core/templates.py @@ -186,6 +186,7 @@ class TemplateContentDraftRequest: scope_type: Literal["tenant", "group", "user"] = "tenant" scope_id: str | None = None metadata: Mapping[str, object] = field(default_factory=dict) + required_fields: tuple[TemplateFieldRequirement, ...] = () @runtime_checkable diff --git a/tests/test_template_contract.py b/tests/test_template_contract.py index 4303117..8da5617 100644 --- a/tests/test_template_contract.py +++ b/tests/test_template_contract.py @@ -15,6 +15,7 @@ from govoplan_core.core.templates import ( TemplateCatalogProvider, TemplateContentDraftRequest, TemplateContentLibraryProvider, + TemplateFieldRequirement, TemplateRenderRequest, TemplateRendererProvider, ) @@ -89,8 +90,12 @@ class TemplateContractTests(unittest.TestCase): template_type="content_fragment", usages=("campaign.content",), content_text="Kind regards", + required_fields=( + TemplateFieldRequirement(path="local.display_name", label="Display name"), + ), ) self.assertEqual("de", content.locale) + self.assertEqual("local.display_name", content.required_fields[0].path) if __name__ == "__main__":