Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb6ab64e82 | ||
|
|
aff4df9e6b | ||
|
|
c86c322408 |
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@govoplan/consultation",
|
||||
"version": "0.1.17",
|
||||
"version": "0.1.20",
|
||||
"private": true,
|
||||
"description": "GovOPlaN Consultation platform module seed.",
|
||||
"type": "module",
|
||||
|
||||
+3
-3
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "govoplan-consultation"
|
||||
version = "0.1.17"
|
||||
version = "0.1.20"
|
||||
description = "GovOPlaN Consultation platform module seed."
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
license = { file = "LICENSE" }
|
||||
authors = [{ name = "GovOPlaN" }]
|
||||
dependencies = [
|
||||
"govoplan-core>=0.1.17",
|
||||
"govoplan-access>=0.1.17",
|
||||
"govoplan-core>=0.1.18",
|
||||
"govoplan-access>=0.1.18",
|
||||
]
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
"""German translations for public structured documentation metadata."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
|
||||
GERMAN_STRUCTURED_TRANSLATIONS: dict[str, dict[str, Any]] = {'consultation.module-boundary': {'consequence_classes': {'seed_boundary': 'Erklärt nur Besitz und '
|
||||
'Berechtigungen an; es '
|
||||
'ist noch kein '
|
||||
'Laufzeit-Workflow '
|
||||
'verfügbar.'}}}
|
||||
@@ -1,12 +1,15 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from govoplan_core.core.modules import with_documentation_structured_translations
|
||||
from govoplan_consultation.backend.german_structured_documentation import GERMAN_STRUCTURED_TRANSLATIONS
|
||||
|
||||
from govoplan_core.core.access import CAPABILITY_AUTH_PERMISSION_EVALUATOR, CAPABILITY_AUTH_PRINCIPAL_RESOLVER
|
||||
from govoplan_core.core.modules import DocumentationLink, DocumentationTopic, ModuleManifest, PermissionDefinition, RoleTemplate
|
||||
from govoplan_core.core.provider_governance import declared_module_architecture
|
||||
|
||||
MODULE_ID = "consultation"
|
||||
MODULE_NAME = "Consultation"
|
||||
MODULE_VERSION = "0.1.17"
|
||||
MODULE_VERSION = "0.1.20"
|
||||
READ_SCOPE = "consultation:workspace:read"
|
||||
WRITE_SCOPE = "consultation:workspace:write"
|
||||
ADMIN_SCOPE = "consultation:workspace:admin"
|
||||
@@ -68,6 +71,13 @@ DOCUMENTATION = (
|
||||
layer="available",
|
||||
documentation_types=("admin", "user"),
|
||||
audience=("user", "operator", "module_admin", "product_owner"),
|
||||
translations={
|
||||
"de": {
|
||||
"title": "Modulgrenze von Consultation",
|
||||
"summary": "Öffentliche Konsultationen, Anhörungen, Rückmeldungen von Interessengruppen, förmliche Stellungnahmen, Erwiderungsmatrizen und Veröffentlichung von Ergebnissen.",
|
||||
"body": "Dieses Repository ist derzeit ein Grundgerüst für ein Plattformmodul. Es registriert die Fachgrenze, Berechtigungsoberfläche, Rollenvorlagen und Dokumentationsmetadaten, bevor Laufzeit-APIs, Datenbankmodelle, Migrationen und WebUI-Routen eingeführt werden.",
|
||||
}
|
||||
},
|
||||
order=100,
|
||||
related_modules=OPTIONAL_DEPENDENCIES,
|
||||
links=(
|
||||
@@ -78,7 +88,11 @@ DOCUMENTATION = (
|
||||
),
|
||||
),
|
||||
metadata={
|
||||
"kind": "reference",
|
||||
"seed": True,
|
||||
"consequence_classes": {
|
||||
"seed_boundary": "Declares ownership and permissions only; no runtime workflow is available yet.",
|
||||
},
|
||||
"domain_objects": ['consultation processes', 'hearing events', 'stakeholder feedback', 'formal comments', 'response matrices', 'publication state'],
|
||||
"first_slice": "Define consultation, phase, stakeholder, comment, response, publication, and record-link concepts.",
|
||||
},
|
||||
@@ -107,5 +121,10 @@ manifest = ModuleManifest(
|
||||
)
|
||||
|
||||
|
||||
manifest = with_documentation_structured_translations(
|
||||
manifest, locale="de", translations=GERMAN_STRUCTURED_TRANSLATIONS
|
||||
)
|
||||
|
||||
|
||||
def get_manifest() -> ModuleManifest:
|
||||
return manifest
|
||||
|
||||
@@ -15,6 +15,15 @@ class ManifestSeedTests(unittest.TestCase):
|
||||
self.assertEqual({permission.scope for permission in manifest.permissions}, {READ_SCOPE, WRITE_SCOPE, ADMIN_SCOPE})
|
||||
self.assertEqual({role.slug for role in manifest.role_templates}, {"consultation_manager", "consultation_viewer"})
|
||||
self.assertTrue(manifest.documentation)
|
||||
topic = manifest.documentation[0]
|
||||
self.assertEqual("reference", topic.metadata["kind"])
|
||||
self.assertIn("seed_boundary", topic.metadata["consequence_classes"])
|
||||
self.assertTrue(
|
||||
all(
|
||||
topic.translations.get("de", {}).get(field)
|
||||
for field in ("title", "summary", "body")
|
||||
)
|
||||
)
|
||||
self.assertIsNone(manifest.route_factory)
|
||||
self.assertIsNone(manifest.migration_spec)
|
||||
self.assertIsNone(manifest.frontend)
|
||||
|
||||
Reference in New Issue
Block a user