Étape 55 : écrans /mobile-benevole et /mobile-referent d'après la maquette (design/Planning bénévole mobile) — créneau en cours ou prochain mis en avant, planning par journée de festival avec frise horaire, compteurs et pointage du référent par créneau. Étape 56 : message de l'organisation (Edition.volunteer_message, onglet « Message aux bénévoles ») et message de chaque poste (Position.message, saisi par le référent), migration 0029, affichés sur l'écran bénévole. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""Lecture et mise à jour d'une édition (dates, nom, rétention)."""
|
|
|
|
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlmodel import Session
|
|
|
|
from app.api._common import set_message
|
|
from app.api.deps import get_edition
|
|
from app.api.schemas import EditionRead, EditionUpdate
|
|
from app.auth.deps import current_account_in_edition, require_coordinator
|
|
from app.db import get_session
|
|
from app.models import Account, Edition
|
|
|
|
router = APIRouter(prefix="/editions", tags=["editions"])
|
|
|
|
|
|
@router.get("/{edition_id}", response_model=EditionRead)
|
|
def read_edition(
|
|
edition: Edition = Depends(get_edition),
|
|
_account: Account = Depends(current_account_in_edition),
|
|
) -> Edition:
|
|
return edition
|
|
|
|
|
|
@router.patch("/{edition_id}", response_model=EditionRead)
|
|
def update_edition(
|
|
payload: EditionUpdate,
|
|
edition: Edition = Depends(get_edition),
|
|
_guard: Account = Depends(require_coordinator),
|
|
session: Session = Depends(get_session),
|
|
) -> Edition:
|
|
changes = payload.model_dump(exclude_unset=True)
|
|
if "volunteer_message" in changes:
|
|
set_message(edition, "volunteer_message", changes.pop("volunteer_message"))
|
|
for field, value in changes.items():
|
|
setattr(edition, field, value)
|
|
if edition.end_date < edition.start_date:
|
|
raise HTTPException(
|
|
status_code=422, detail={"code": "edition.dates_inconsistent"}
|
|
)
|
|
session.add(edition)
|
|
session.commit()
|
|
session.refresh(edition)
|
|
return edition
|