69 lines
1.9 KiB
Python
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
|