diff --git a/pyproject.toml b/pyproject.toml index f1934c3..9980935 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta" [project] name = "govoplan-parties" -version = "0.1.18" +version = "0.1.19" description = "Procedure-local party and representation lifecycle for GovOPlaN." readme = "README.md" requires-python = ">=3.12" authors = [{ name = "GovOPlaN" }] -dependencies = ["govoplan-core>=0.1.18"] +dependencies = ["govoplan-core>=0.1.37"] [tool.setuptools.packages.find] where = ["src"] diff --git a/src/govoplan_parties/__init__.py b/src/govoplan_parties/__init__.py index 0a76edd..a05f338 100644 --- a/src/govoplan_parties/__init__.py +++ b/src/govoplan_parties/__init__.py @@ -1,3 +1,3 @@ """GovOPlaN Parties module.""" -__version__ = "0.1.18" +__version__ = "0.1.19" diff --git a/src/govoplan_parties/backend/manifest.py b/src/govoplan_parties/backend/manifest.py index 1b40059..c97293d 100644 --- a/src/govoplan_parties/backend/manifest.py +++ b/src/govoplan_parties/backend/manifest.py @@ -17,7 +17,7 @@ from govoplan_parties.backend.service import SqlPartyResolver MODULE_ID = "parties" MODULE_NAME = "Parties" -MODULE_VERSION = "0.1.18" +MODULE_VERSION = "0.1.19" READ_SCOPE = "parties:procedure:read" WRITE_SCOPE = "parties:procedure:write" ADMIN_SCOPE = "parties:procedure:admin" @@ -79,6 +79,30 @@ manifest = ModuleManifest( documentation_types=("admin", "user"), audience=("user", "operator", "module_admin", "auditor"), links=(DocumentationLink(label="Parties domain and recovery", href="govoplan-parties/docs/PARTIES_DOMAIN.md", kind="repository"),), + translations={ + "de": { + "title": "Datenschutzanfragen zu Verfahrensbeteiligten", + "summary": ( + "Personenbezogene Beteiligtenangaben exportieren und dabei " + "Verfahrens- und Vertretungsnachweise erhalten." + ), + "body": ( + "Der Parties-Anbieter gleicht exakte mandantengebundene kanonische Identitäts- " + "oder unterstützte Kontoselektoren sowie ausdrückliche Parties-Verweise ab. Er " + "exportiert typisierte Verfahrens-, Beteiligten-, Kanal-, Momentaufnahme- und " + "Vertretungsfelder, jedoch nicht den frei strukturierten Inhalt, freie " + "Änderungsgründe, Nachweiskennungen oder Kennungen unbeteiligter Gegenparteien. " + "Unveränderliche Revisionen und die Zuordnung zu bearbeitenden Personen bleiben " + "erhalten. Ein aktuell wirksamer Beteiligteneintrag wird für eine berechtigte " + "manuelle Prüfung markiert; Berichtigung, Ablauf, Ablösung und Widerruf einer " + "Vertretung müssen den geregelten Lebenszyklus verwenden, da Parties keine " + "automatische Datenschutzmutation ausführt. Widersprechen ausdrückliche Verweise " + "einem kanonischen Selektor, wird sicher abgebrochen. Suchen sind begrenzt und " + "Treffer zur Bearbeitungszuordnung geben keine fremden Beteiligten- oder " + "Kontaktdaten preis." + ), + } + }, ), DocumentationTopic( id="parties.procedure-and-representation", @@ -89,6 +113,25 @@ manifest = ModuleManifest( documentation_types=("admin", "user"), audience=("user", "operator", "module_admin", "auditor"), links=(DocumentationLink(label="Parties domain and recovery", href="govoplan-parties/docs/PARTIES_DOMAIN.md", kind="repository"),), + metadata={"kind": "reference"}, + translations={ + "de": { + "title": "Verfahrensbeteiligte und Vertretung", + "summary": ( + "Rollen im Verfahren und Vertretungsbefugnisse von " + "personenbezogenen Stammdaten getrennt halten." + ), + "body": ( + "Parties speichert Verfahrensbeteiligungen und ausdrückliche " + "Vertretungsbefugnisse als unveränderliche Revisionen. Befugnisse können nicht " + "unbemerkt verschwinden, und Zustellungen verwenden eingefrorene " + "Kontaktmomentaufnahmen. Nicht versionierte Ansichten folgen der in der " + "Titelleiste gewählten Gültigkeits- und Aufzeichnungszeit; ausdrücklich für das " + "Verfahren angegebene Auflösungszeiten haben Vorrang und die aktuelle " + "Berechtigungsprüfung gilt unverändert." + ), + } + }, ), ), architecture=declared_module_architecture( diff --git a/tests/test_documentation.py b/tests/test_documentation.py new file mode 100644 index 0000000..21a256b --- /dev/null +++ b/tests/test_documentation.py @@ -0,0 +1,27 @@ +from __future__ import annotations + +import unittest + +from govoplan_parties.backend.manifest import manifest + + +class PartiesDocumentationTests(unittest.TestCase): + def test_public_topics_have_complete_german_reference_content(self) -> None: + self.assertEqual(2, len(manifest.documentation)) + for topic in manifest.documentation: + translation = topic.translations.get("de", {}) + self.assertTrue( + all(translation.get(key) for key in ("title", "summary", "body")) + ) + + def test_procedure_topic_is_the_field_and_consequence_reference(self) -> None: + topic = next( + item + for item in manifest.documentation + if item.id == "parties.procedure-and-representation" + ) + self.assertEqual("reference", topic.metadata.get("kind")) + + +if __name__ == "__main__": + unittest.main()