Files
govoplan-tenancy/src/govoplan_tenancy/backend/manifest.py
T

69 lines
1.9 KiB
Python

from __future__ import annotations
from govoplan_core.core.access import (
CAPABILITY_AUTH_PERMISSION_EVALUATOR,
CAPABILITY_AUTH_PRINCIPAL_RESOLVER,
CAPABILITY_AUTH_TENANT_CONTEXT_SWITCHER,
CAPABILITY_TENANCY_TENANT_RESOLVER,
)
from govoplan_core.core.modules import FrontendModule, ModuleContext, ModuleManifest
from govoplan_core.core.views import ViewSurface
def _tenant_resolver(context: ModuleContext):
del context
from govoplan_tenancy.backend.capabilities import SqlTenantResolver
return SqlTenantResolver()
def _route_factory(context: ModuleContext):
del context
from fastapi import APIRouter
from govoplan_tenancy.backend.api.v1.routes import router, tenant_router
aggregate = APIRouter()
aggregate.include_router(router)
aggregate.include_router(tenant_router)
return aggregate
manifest = ModuleManifest(
id="tenancy",
name="Tenancy",
version="0.1.8",
required_capabilities=(
CAPABILITY_AUTH_PRINCIPAL_RESOLVER,
CAPABILITY_AUTH_PERMISSION_EVALUATOR,
CAPABILITY_AUTH_TENANT_CONTEXT_SWITCHER,
),
route_factory=_route_factory,
capability_factories={
CAPABILITY_TENANCY_TENANT_RESOLVER: _tenant_resolver,
},
frontend=FrontendModule(
module_id="tenancy",
package_name="@govoplan/tenancy-webui",
view_surfaces=(
ViewSurface(
id="tenancy.admin.system-tenants",
module_id="tenancy",
kind="section",
label="System tenants",
order=10,
),
ViewSurface(
id="tenancy.admin.tenant-settings",
module_id="tenancy",
kind="section",
label="Tenant settings",
order=90,
),
),
),
)
def get_manifest() -> ModuleManifest:
return manifest