65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
from __future__ import annotations
|
|
|
|
from govoplan_audit.backend.db import models as audit_models # noqa: F401 - populate Audit ORM metadata
|
|
from govoplan_core.core.access import (
|
|
CAPABILITY_AUDIT_RECORDER,
|
|
CAPABILITY_AUDIT_RETENTION,
|
|
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.modules import FrontendModule, MigrationSpec, ModuleContext, ModuleManifest
|
|
from govoplan_core.db.base import Base
|
|
|
|
|
|
def _route_factory(context: ModuleContext):
|
|
del context
|
|
from govoplan_audit.backend.api.v1.routes import router
|
|
|
|
return router
|
|
|
|
|
|
def _audit_recorder(context: ModuleContext):
|
|
del context
|
|
from govoplan_audit.backend.recording import SqlAuditRecorder
|
|
|
|
return SqlAuditRecorder()
|
|
|
|
|
|
def _audit_retention(context: ModuleContext):
|
|
del context
|
|
from govoplan_audit.backend.retention import SqlAuditRetentionProvider
|
|
|
|
return SqlAuditRetentionProvider()
|
|
|
|
|
|
manifest = ModuleManifest(
|
|
id="audit",
|
|
name="Audit",
|
|
version="0.1.7",
|
|
required_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR),
|
|
route_factory=_route_factory,
|
|
frontend=FrontendModule(
|
|
module_id="audit",
|
|
package_name="@govoplan/audit-webui",
|
|
),
|
|
migration_spec=MigrationSpec(
|
|
module_id="audit",
|
|
metadata=Base.metadata,
|
|
retirement_supported=True,
|
|
retirement_provider=drop_table_retirement_provider(audit_models.AuditLog, audit_models.AuditOutboxEvent, label="Audit"),
|
|
retirement_notes="Destructive retirement drops audit-owned database tables after the installer captures a database snapshot.",
|
|
),
|
|
uninstall_guard_providers=(
|
|
persistent_table_uninstall_guard(audit_models.AuditLog, audit_models.AuditOutboxEvent, label="Audit"),
|
|
),
|
|
capability_factories={
|
|
CAPABILITY_AUDIT_RECORDER: _audit_recorder,
|
|
CAPABILITY_AUDIT_RETENTION: _audit_retention,
|
|
},
|
|
)
|
|
|
|
|
|
def get_manifest() -> ModuleManifest:
|
|
return manifest
|