Persist hierarchical definition policy overrides
This commit is contained in:
@@ -1,6 +1,15 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from govoplan_core.core.access import CAPABILITY_AUTH_PERMISSION_EVALUATOR, CAPABILITY_AUTH_PRINCIPAL_RESOLVER
|
||||
from pathlib import Path
|
||||
|
||||
from govoplan_core.core.access import (
|
||||
CAPABILITY_AUTH_PERMISSION_EVALUATOR,
|
||||
CAPABILITY_AUTH_PRINCIPAL_RESOLVER,
|
||||
)
|
||||
from govoplan_core.core.module_guards import (
|
||||
drop_table_retirement_provider,
|
||||
persistent_table_uninstall_guard,
|
||||
)
|
||||
from govoplan_core.core.policy import (
|
||||
CAPABILITY_POLICY_DEFINITION_GOVERNANCE,
|
||||
CAPABILITY_POLICY_PRIVACY_RETENTION,
|
||||
@@ -8,11 +17,14 @@ from govoplan_core.core.policy import (
|
||||
)
|
||||
from govoplan_core.core.modules import (
|
||||
FrontendModule,
|
||||
MigrationSpec,
|
||||
ModuleContext,
|
||||
ModuleInterfaceProvider,
|
||||
ModuleManifest,
|
||||
)
|
||||
from govoplan_core.core.views import ViewSurface
|
||||
from govoplan_core.db.base import Base
|
||||
from govoplan_policy.backend.db import models as policy_models
|
||||
|
||||
|
||||
def _route_factory(context: ModuleContext):
|
||||
@@ -31,7 +43,9 @@ def _privacy_retention_service(context: ModuleContext) -> object:
|
||||
|
||||
def _scheduling_participant_privacy_policy(context: ModuleContext) -> object:
|
||||
del context
|
||||
from govoplan_policy.backend.scheduling_privacy import SqlSchedulingParticipantPrivacyPolicy
|
||||
from govoplan_policy.backend.scheduling_privacy import (
|
||||
SqlSchedulingParticipantPrivacyPolicy,
|
||||
)
|
||||
|
||||
return SqlSchedulingParticipantPrivacyPolicy()
|
||||
|
||||
@@ -49,7 +63,10 @@ manifest = ModuleManifest(
|
||||
id="policy",
|
||||
name="Policy",
|
||||
version="0.1.9",
|
||||
required_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR),
|
||||
required_capabilities=(
|
||||
CAPABILITY_AUTH_PRINCIPAL_RESOLVER,
|
||||
CAPABILITY_AUTH_PERMISSION_EVALUATOR,
|
||||
),
|
||||
provides_interfaces=(
|
||||
ModuleInterfaceProvider(
|
||||
name="policy.definition_governance",
|
||||
@@ -57,14 +74,58 @@ manifest = ModuleManifest(
|
||||
),
|
||||
),
|
||||
route_factory=_route_factory,
|
||||
migration_spec=MigrationSpec(
|
||||
module_id="policy",
|
||||
metadata=Base.metadata,
|
||||
script_location=str(Path(__file__).with_name("migrations") / "versions"),
|
||||
retirement_supported=True,
|
||||
retirement_provider=drop_table_retirement_provider(
|
||||
policy_models.PolicyOverride,
|
||||
label="Policy overrides",
|
||||
),
|
||||
retirement_notes=(
|
||||
"Destructive retirement removes explicit definition and View "
|
||||
"policy overrides after a database snapshot."
|
||||
),
|
||||
),
|
||||
uninstall_guard_providers=(
|
||||
persistent_table_uninstall_guard(
|
||||
policy_models.PolicyOverride,
|
||||
label="Policy overrides",
|
||||
),
|
||||
),
|
||||
frontend=FrontendModule(
|
||||
module_id="policy",
|
||||
package_name="@govoplan/policy-webui",
|
||||
view_surfaces=(
|
||||
ViewSurface(id="policy.admin.system-retention", module_id="policy", kind="section", label="System retention", order=80),
|
||||
ViewSurface(id="policy.admin.tenant-retention", module_id="policy", kind="section", label="Tenant retention", order=80),
|
||||
ViewSurface(id="policy.admin.group-retention", module_id="policy", kind="section", label="Group retention", order=80),
|
||||
ViewSurface(id="policy.admin.user-retention", module_id="policy", kind="section", label="User retention", order=80),
|
||||
ViewSurface(
|
||||
id="policy.admin.system-retention",
|
||||
module_id="policy",
|
||||
kind="section",
|
||||
label="System retention",
|
||||
order=80,
|
||||
),
|
||||
ViewSurface(
|
||||
id="policy.admin.tenant-retention",
|
||||
module_id="policy",
|
||||
kind="section",
|
||||
label="Tenant retention",
|
||||
order=80,
|
||||
),
|
||||
ViewSurface(
|
||||
id="policy.admin.group-retention",
|
||||
module_id="policy",
|
||||
kind="section",
|
||||
label="Group retention",
|
||||
order=80,
|
||||
),
|
||||
ViewSurface(
|
||||
id="policy.admin.user-retention",
|
||||
module_id="policy",
|
||||
kind="section",
|
||||
label="User retention",
|
||||
order=80,
|
||||
),
|
||||
),
|
||||
),
|
||||
capability_factories={
|
||||
|
||||
Reference in New Issue
Block a user