44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
"""Routes G9 — Paramètres du groupe."""
|
|
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"])
|
|
|
|
|
|
@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:
|
|
groupe.heure_reunion = req.heure_reunion
|
|
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)
|