feat: add DSAR administration

This commit is contained in:
2026-08-07 14:53:28 +02:00
parent bc589a3d4f
commit 176c1d826f
5 changed files with 818 additions and 1 deletions
+38
View File
@@ -4,6 +4,7 @@ from govoplan_admin.backend.db import models as admin_models # noqa: F401 - pop
from govoplan_core.core.access import CAPABILITY_AUTH_PERMISSION_EVALUATOR, CAPABILITY_AUTH_PRINCIPAL_RESOLVER
from govoplan_core.core.module_guards import persistent_table_uninstall_guard
from govoplan_core.core.modules import (
DocumentationCondition,
DocumentationTopic,
FrontendModule,
MigrationSpec,
@@ -170,6 +171,42 @@ manifest = ModuleManifest(
],
},
),
DocumentationTopic(
id="admin.data-subject-request-workspace",
title="Review data-subject requests",
summary="The privacy workspace makes provider coverage, exports, retained evidence, and selected erasure actions explicit.",
body=(
"The data-subject request section is visible only with the Access privacy read permission. Create and search operations require privacy management authority; exports and erasure execution have separate permissions. Subject selectors support account, membership, identity, email, and namespaced source-system references. The workspace never treats a module without a provider as searched. It lists provider coverage and failures next to collected records. An erasure plan separates executable provider actions from retained or manual-review items. Destructive execution uses the current resource revision, selected actions, and an exact confirmation phrase."
),
layer="configured",
documentation_types=("admin", "user"),
audience=("privacy_officer", "tenant_owner", "operator"),
related_modules=("access", "audit", "policy"),
conditions=(
DocumentationCondition(
required_modules=("admin", "access"),
any_scopes=(
"access:privacy:read",
"access:privacy:manage",
"access:privacy:export",
"access:privacy:erase",
),
),
),
translations={
"de": {
"title": "Betroffenenanfragen prüfen",
"summary": "Der Datenschutz-Arbeitsbereich weist Anbieterabdeckung, Exporte, aufbewahrte Nachweise und ausgewählte Löschaktionen explizit aus.",
"body": "Der Bereich ist nur mit dem Leserecht für Datenschutzanfragen sichtbar. Anlage und Suche, Export sowie Löschausführung besitzen getrennte Rechte. Betroffene Personen können über Konto, Mitgliedschaft, Identität, E-Mail-Adresse und namensraumgebundene Quellsystemreferenzen gesucht werden. Module ohne Anbieter werden nicht als durchsucht dargestellt. Ein Löschplan trennt ausführbare Aktionen von aufzubewahrenden oder manuell zu prüfenden Einträgen. Die Ausführung verlangt die aktuelle Revision, eine Aktionsauswahl und eine exakte Bestätigung.",
}
},
metadata={
"kind": "workflow",
"help_contexts": ["admin.privacy.data-subject-requests"],
"route": "/admin?section=tenant-data-subject-requests",
"api_path": "/api/v1/admin/privacy/data-subject-requests",
},
),
),
frontend=FrontendModule(
module_id="admin",
@@ -183,6 +220,7 @@ manifest = ModuleManifest(
ViewSurface(id="admin.section.system-groups", module_id="admin", kind="section", label="Group templates", order=50),
ViewSurface(id="admin.section.system-modules", module_id="admin", kind="section", label="Modules", order=85),
ViewSurface(id="admin.section.system-tenant-modules", module_id="admin", kind="section", label="Tenant modules", order=86),
ViewSurface(id="admin.section.tenant-data-subject-requests", module_id="admin", kind="section", label="Data-subject requests", order=55),
ViewSurface(id="admin.section.tenant-modules", module_id="admin", kind="section", label="Modules", order=60),
),
),