feat(admin): configure system navigation defaults

This commit is contained in:
2026-08-20 01:47:03 +02:00
parent 8a75c82a5d
commit a1d7b649aa
5 changed files with 60 additions and 6 deletions
@@ -75,6 +75,11 @@ from govoplan_core.core.module_installer_notifications import (
installer_notification_subject,
)
from govoplan_core.core.module_license import module_license_decision, module_license_diagnostics
from govoplan_core.core.navigation import (
NavigationPreferences,
navigation_preferences_from_settings,
update_navigation_preferences,
)
from govoplan_core.core.module_package_catalog import (
record_module_package_catalog_acceptance,
validate_module_package_catalog,
@@ -153,6 +158,7 @@ SYSTEM_SETTINGS_SECTIONS = (
"languages",
"privacy_retention_policy",
"maintenance_mode",
"navigation",
"settings",
)
@@ -288,6 +294,7 @@ def _system_settings_item(session: Session) -> SystemSettingsItem:
policy = privacy_policy_from_settings(item)
maintenance_mode = saved_maintenance_mode(session)
i18n_payload = system_i18n_payload(item)
navigation = navigation_preferences_from_settings(item.settings)
return SystemSettingsItem(
default_locale=item.default_locale,
allow_tenant_custom_groups=item.allow_tenant_custom_groups,
@@ -298,6 +305,7 @@ def _system_settings_item(session: Session) -> SystemSettingsItem:
available_languages=i18n_payload["available_languages"],
enabled_language_codes=i18n_payload["enabled_languages"],
settings=item.settings or {},
navigation=navigation.as_dict() if navigation is not None else None,
)
@@ -316,6 +324,7 @@ def _system_settings_sections(item: SystemSettingsItem) -> dict[str, Any]:
},
"privacy_retention_policy": payload["privacy_retention_policy"],
"maintenance_mode": payload["maintenance_mode"],
"navigation": payload["navigation"],
"settings": payload["settings"],
}
@@ -1810,6 +1819,15 @@ def write_system_settings(
available_languages=available_languages,
enabled_language_codes=enabled_language_codes,
)
if "navigation" in payload.model_fields_set:
item.settings = update_navigation_preferences(
item.settings,
NavigationPreferences(
order=tuple(payload.navigation.order),
hidden=tuple(payload.navigation.hidden),
locked=tuple(payload.navigation.locked),
) if payload.navigation is not None else None,
)
if payload.privacy_retention_policy is not None:
set_privacy_policy(item, payload.privacy_retention_policy.model_dump(mode="json"))
if payload.maintenance_mode is not None:
+3 -1
View File
@@ -5,7 +5,7 @@ from typing import Any, Literal
from pydantic import BaseModel, ConfigDict, Field
from govoplan_core.api.v1.schemas import DeltaDeletedItem
from govoplan_core.api.v1.schemas import DeltaDeletedItem, NavigationPreferencesPayload
from govoplan_core.i18n import REFERENCE_LANGUAGE_CODE
from govoplan_core.privacy.schemas import PrivacyRetentionPolicyItem
@@ -50,6 +50,7 @@ class SystemSettingsItem(BaseModel):
available_languages: list[LanguagePackageItem] = Field(default_factory=list)
enabled_language_codes: list[str] = Field(default_factory=list)
settings: dict[str, Any] = Field(default_factory=dict)
navigation: NavigationPreferencesPayload | None = None
class SystemSettingsDeltaResponse(BaseModel):
@@ -73,6 +74,7 @@ class SystemSettingsUpdateRequest(BaseModel):
maintenance_mode: MaintenanceModeItem | None = None
available_languages: list[LanguagePackageItem] | None = None
enabled_language_codes: list[str] | None = None
navigation: NavigationPreferencesPayload | None = None
change_request_id: str | None = None