59 lines
2.1 KiB
Python
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)
|