Files
bellsystems-cp/backend/settings/router.py
T
bonaminandClaude Sonnet 5 dff1a35560 feat(settings): add log retention settings page
Sysadmin/admin-only settings page for configuring how long device log
history is kept before pruning. GET/PUT /api/settings/log-retention,
new LogRetentionSettings page, nav entry, and route.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 18:33:40 +03:00

62 lines
2.3 KiB
Python

from fastapi import APIRouter, Depends
from auth.models import TokenPayload
from auth.dependencies import require_permission, require_roles
from auth.models import Role
from settings.models import MelodySettings, MelodySettingsUpdate
from settings.public_features_models import PublicFeaturesSettings, PublicFeaturesSettingsUpdate
from settings.log_retention_models import LogRetentionSettings, LogRetentionSettingsUpdate
from settings import service
from settings import public_features_service
from settings import log_retention_service
router = APIRouter(prefix="/api/settings", tags=["settings"])
@router.get("/melody", response_model=MelodySettings)
async def get_melody_settings(
_user: TokenPayload = Depends(require_permission("melodies", "view")),
):
return service.get_melody_settings()
@router.put("/melody", response_model=MelodySettings)
async def update_melody_settings(
body: MelodySettingsUpdate,
_user: TokenPayload = Depends(require_permission("melodies", "edit")),
):
return service.update_melody_settings(body)
# ── Public Features Settings (sysadmin / admin only) ─────────────────────────
@router.get("/public-features", response_model=PublicFeaturesSettings)
async def get_public_features(
_user: TokenPayload = Depends(require_roles(Role.sysadmin, Role.admin)),
):
return public_features_service.get_public_features()
@router.put("/public-features", response_model=PublicFeaturesSettings)
async def update_public_features(
body: PublicFeaturesSettingsUpdate,
_user: TokenPayload = Depends(require_roles(Role.sysadmin, Role.admin)),
):
return public_features_service.update_public_features(body)
# ── Log Retention Settings (sysadmin / admin only) ───────────────────────────
@router.get("/log-retention", response_model=LogRetentionSettings)
async def get_log_retention(
_user: TokenPayload = Depends(require_roles(Role.sysadmin, Role.admin)),
):
return log_retention_service.get_log_retention()
@router.put("/log-retention", response_model=LogRetentionSettings)
async def update_log_retention(
body: LogRetentionSettingsUpdate,
_user: TokenPayload = Depends(require_roles(Role.sysadmin, Role.admin)),
):
return log_retention_service.update_log_retention(body)