Harmonize module metadata and expose View surfaces

This commit is contained in:
2026-07-28 21:04:54 +02:00
parent e8a3e1c18f
commit 36291a57c1
3 changed files with 33 additions and 3 deletions

View File

@@ -3,7 +3,8 @@ from __future__ import annotations
from govoplan_admin.backend.db import models as admin_models # noqa: F401 - populate Admin ORM metadata from govoplan_admin.backend.db import models as admin_models # noqa: F401 - populate Admin ORM metadata
from govoplan_core.core.access import CAPABILITY_AUTH_PERMISSION_EVALUATOR, CAPABILITY_AUTH_PRINCIPAL_RESOLVER 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.module_guards import persistent_table_uninstall_guard
from govoplan_core.core.modules import MigrationSpec, ModuleContext, ModuleManifest from govoplan_core.core.modules import FrontendModule, MigrationSpec, ModuleContext, ModuleManifest
from govoplan_core.core.views import ViewSurface
from govoplan_core.db.base import Base from govoplan_core.db.base import Base
@@ -20,6 +21,19 @@ manifest = ModuleManifest(
version="0.1.8", version="0.1.8",
required_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR), required_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR),
route_factory=_route_factory, route_factory=_route_factory,
frontend=FrontendModule(
module_id="admin",
package_name="@govoplan/admin-webui",
view_surfaces=(
ViewSurface(id="admin.section.overview", module_id="admin", kind="section", label="Administration overview", order=0),
ViewSurface(id="admin.section.system-settings", module_id="admin", kind="section", label="System settings", order=10),
ViewSurface(id="admin.section.system-configuration-changes", module_id="admin", kind="section", label="Configuration changes", order=20),
ViewSurface(id="admin.section.system-configuration-packages", module_id="admin", kind="section", label="Configuration packages", order=30),
ViewSurface(id="admin.section.system-role-templates", module_id="admin", kind="section", label="Role templates", order=40),
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),
),
),
migration_spec=MigrationSpec(module_id="admin", metadata=Base.metadata), migration_spec=MigrationSpec(module_id="admin", metadata=Base.metadata),
uninstall_guard_providers=( uninstall_guard_providers=(
persistent_table_uninstall_guard( persistent_table_uninstall_guard(

View File

@@ -355,8 +355,8 @@ export default function ModuleManagementPanel({ settings, canWrite, canAccessMai
<div className="module-management-meta"> <div className="module-management-meta">
<ModuleStatus module={module} desiredEnabled={desiredEnabled} /> <ModuleStatus module={module} desiredEnabled={desiredEnabled} />
{module.protected && <StatusBadge status="locked" label="i18n:govoplan-admin.locked.a798882f" />} {module.protected && <StatusBadge status="locked" label="i18n:govoplan-admin.locked.a798882f" />}
{module.frontend_package && <span>{module.frontend_package}</span>} <span>i18n:govoplan-admin.webui_package.19645536 <code>{module.frontend_package ?? "none"}</code></span>
{module.migration_module_id && <span>i18n:govoplan-admin.db.e355c23a {module.migration_module_id}</span>} <span>i18n:govoplan-admin.db.e355c23a <code>{module.migration_module_id ?? "none"}</code></span>
</div> </div>
<div className="module-management-details"> <div className="module-management-details">
<span>i18n:govoplan-admin.requires.a4fc9357 {module.dependencies.length ? module.dependencies.join(", ") : "none"}</span> <span>i18n:govoplan-admin.requires.a4fc9357 {module.dependencies.length ? module.dependencies.join(", ") : "none"}</span>

View File

@@ -19,6 +19,7 @@ const adminSections: AdminSectionsUiCapability = {
sections: [ sections: [
{ {
id: "overview", id: "overview",
surfaceId: "admin.section.overview",
label: "i18n:govoplan-admin.overview.0efc2e6b", label: "i18n:govoplan-admin.overview.0efc2e6b",
group: "ROOT", group: "ROOT",
order: 0, order: 0,
@@ -31,6 +32,7 @@ const adminSections: AdminSectionsUiCapability = {
}, },
{ {
id: "system-settings", id: "system-settings",
surfaceId: "admin.section.system-settings",
label: "i18n:govoplan-admin.general.9239ee2c", label: "i18n:govoplan-admin.general.9239ee2c",
group: "SYSTEM", group: "SYSTEM",
order: 10, order: 10,
@@ -43,6 +45,7 @@ const adminSections: AdminSectionsUiCapability = {
}, },
{ {
id: "system-configuration-changes", id: "system-configuration-changes",
surfaceId: "admin.section.system-configuration-changes",
label: "i18n:govoplan-admin.changes.8aa57de6", label: "i18n:govoplan-admin.changes.8aa57de6",
group: "SYSTEM", group: "SYSTEM",
order: 20, order: 20,
@@ -54,6 +57,7 @@ const adminSections: AdminSectionsUiCapability = {
}, },
{ {
id: "system-configuration-packages", id: "system-configuration-packages",
surfaceId: "admin.section.system-configuration-packages",
label: "i18n:govoplan-admin.configuration_packages.eb2f05f1", label: "i18n:govoplan-admin.configuration_packages.eb2f05f1",
group: "SYSTEM", group: "SYSTEM",
order: 30, order: 30,
@@ -65,6 +69,7 @@ const adminSections: AdminSectionsUiCapability = {
}, },
{ {
id: "system-role-templates", id: "system-role-templates",
surfaceId: "admin.section.system-role-templates",
label: "i18n:govoplan-admin.tenant_roles.51aca82d", label: "i18n:govoplan-admin.tenant_roles.51aca82d",
group: "SYSTEM", group: "SYSTEM",
order: 40, order: 40,
@@ -78,6 +83,7 @@ const adminSections: AdminSectionsUiCapability = {
}, },
{ {
id: "system-modules", id: "system-modules",
surfaceId: "admin.section.system-modules",
label: "i18n:govoplan-admin.modules.04e9462c", label: "i18n:govoplan-admin.modules.04e9462c",
group: "SYSTEM", group: "SYSTEM",
order: 85, order: 85,
@@ -90,6 +96,7 @@ const adminSections: AdminSectionsUiCapability = {
}, },
{ {
id: "system-groups", id: "system-groups",
surfaceId: "admin.section.system-groups",
label: "i18n:govoplan-admin.groups.ae9629f4", label: "i18n:govoplan-admin.groups.ae9629f4",
group: "SYSTEM", group: "SYSTEM",
order: 50, order: 50,
@@ -110,6 +117,15 @@ export const adminModule: PlatformWebModule = {
version: "1.0.0", version: "1.0.0",
dependencies: ["access"], dependencies: ["access"],
translations, translations,
viewSurfaces: [
{ id: "admin.section.overview", moduleId: "admin", kind: "section", label: "Administration overview", order: 0 },
{ id: "admin.section.system-settings", moduleId: "admin", kind: "section", label: "System settings", order: 10 },
{ id: "admin.section.system-configuration-changes", moduleId: "admin", kind: "section", label: "Configuration changes", order: 20 },
{ id: "admin.section.system-configuration-packages", moduleId: "admin", kind: "section", label: "Configuration packages", order: 30 },
{ id: "admin.section.system-role-templates", moduleId: "admin", kind: "section", label: "Role templates", order: 40 },
{ id: "admin.section.system-groups", moduleId: "admin", kind: "section", label: "Group templates", order: 50 },
{ id: "admin.section.system-modules", moduleId: "admin", kind: "section", label: "Modules", order: 85 }
],
uiCapabilities: { uiCapabilities: {
"admin.sections": adminSections "admin.sections": adminSections
} }