74 lines
2.5 KiB
Python
Executable File
74 lines
2.5 KiB
Python
Executable File
"""
|
|
Routes pour la configuration
|
|
"""
|
|
from fastapi import APIRouter, HTTPException
|
|
from pydantic import BaseModel
|
|
import yaml
|
|
from backend.app.core.config import config_manager
|
|
|
|
router = APIRouter(prefix="/api/config", tags=["config"])
|
|
|
|
@router.get("/ui")
|
|
async def get_ui_config():
|
|
"""Récupérer la configuration UI"""
|
|
config = config_manager.config
|
|
return {
|
|
"cell_size": config.ui.cell_size,
|
|
"font_size": config.ui.font_size,
|
|
"cell_gap": config.ui.cell_gap,
|
|
"offline_transparency": config.ui.offline_transparency,
|
|
"show_mac": config.ui.show_mac,
|
|
"show_vendor": config.ui.show_vendor,
|
|
"architecture_title_font_size": config.ui.architecture_title_font_size
|
|
}
|
|
|
|
@router.post("/reload")
|
|
async def reload_config():
|
|
"""Recharger la configuration depuis le fichier config.yaml"""
|
|
try:
|
|
config = config_manager.reload_config()
|
|
return {
|
|
"success": True,
|
|
"message": "Configuration rechargée avec succès",
|
|
"ui": {
|
|
"cell_size": config.ui.cell_size,
|
|
"font_size": config.ui.font_size,
|
|
"cell_gap": config.ui.cell_gap,
|
|
"offline_transparency": config.ui.offline_transparency,
|
|
"show_mac": config.ui.show_mac,
|
|
"show_vendor": config.ui.show_vendor,
|
|
"architecture_title_font_size": config.ui.architecture_title_font_size
|
|
}
|
|
}
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=f"Erreur rechargement config: {str(e)}")
|
|
|
|
|
|
class UIConfigUpdate(BaseModel):
|
|
architecture_title_font_size: int
|
|
|
|
|
|
@router.post("/ui")
|
|
async def update_ui_config(payload: UIConfigUpdate):
|
|
"""Mettre à jour la configuration UI"""
|
|
config_path = "./config.yaml"
|
|
try:
|
|
with open(config_path, "r", encoding="utf-8") as f:
|
|
yaml_data = yaml.safe_load(f) or {}
|
|
|
|
if "ui" not in yaml_data or yaml_data["ui"] is None:
|
|
yaml_data["ui"] = {}
|
|
|
|
yaml_data["ui"]["architecture_title_font_size"] = int(payload.architecture_title_font_size)
|
|
|
|
with open(config_path, "w", encoding="utf-8") as f:
|
|
yaml.safe_dump(yaml_data, f, allow_unicode=True, sort_keys=False)
|
|
|
|
config = config_manager.reload_config()
|
|
return {
|
|
"message": "Configuration UI mise à jour",
|
|
"architecture_title_font_size": config.ui.architecture_title_font_size
|
|
}
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=f"Erreur mise à jour config UI: {str(e)}")
|