groupe-meditation/backend/app/routers/parametres.py
2026-05-25 17:39:38 -04:00

59 lines
2.1 KiB
Python

"""Routes G9 — Paramètres du groupe."""
from datetime import time as dt_time
from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.database import get_db
from app.core.security import require_executif, get_current_membre
from app.models.groupe import Groupe
from app.schemas.phase3 import GroupeUpdate, GroupeDetail
router = APIRouter(prefix="/groupe", tags=["G9 — Paramètres"])
ORDRES_ASSEMBLEE = {"premiere", "deuxieme", "troisieme", "quatrieme", "derniere"}
@router.get("/", response_model=GroupeDetail)
async def detail_groupe(
membre=Depends(get_current_membre),
db: AsyncSession = Depends(get_db),
):
"""Détail du groupe du membre connecté."""
groupe = await db.get(Groupe, membre.groupe_id)
return GroupeDetail.model_validate(groupe)
@router.patch("/", response_model=GroupeDetail)
async def modifier_groupe(
req: GroupeUpdate,
executif=Depends(require_executif),
db: AsyncSession = Depends(get_db),
):
"""G9 — Modifier les paramètres du groupe (exécutif)."""
groupe = await db.get(Groupe, executif.groupe_id)
if req.nom is not None:
groupe.nom = req.nom.strip()
if req.adresse_local is not None:
groupe.adresse_local = req.adresse_local.strip()
if req.jour_reunion is not None:
groupe.jour_reunion = req.jour_reunion.strip()
if req.heure_reunion is not None:
h = req.heure_reunion.strip()
if h:
try:
parts = h.split(":")
groupe.heure_reunion = dt_time(int(parts[0]), int(parts[1]))
except (ValueError, IndexError):
groupe.heure_reunion = None
else:
groupe.heure_reunion = None
if req.assemblee_affaires_ordre is not None:
ordre = req.assemblee_affaires_ordre.strip()
if ordre in ORDRES_ASSEMBLEE:
groupe.assemblee_affaires_ordre = ordre
if req.format_reunion is not None:
groupe.format_reunion = req.format_reunion.strip()
if req.lien_aa87 is not None:
groupe.lien_aa87 = req.lien_aa87.strip()
await db.flush()
return GroupeDetail.model_validate(groupe)