groupe-meditation/backend/app/schemas/propositions.py
Daniel Allaire 6677b0f57b Ajouter historique métier et protection concurrente
Ajoute modifie_le aux objets sensibles et fait transmettre la version affichée par le frontend pour refuser les écritures périmées avec un message HTTP 409.

Ajoute une table historique_modifications et un service d'historique métier afin de journaliser automatiquement les raisons des changements importants sans intervention de l'utilisateur.

Expose l'historique métier dans le module Journal, distinct du journal technique, et documente les processus utilisateurs ainsi qu'une présentation sobre aux membres.
2026-05-31 10:59:41 -04:00

42 lines
1.2 KiB
Python

"""Schémas — Propositions et résolutions."""
from pydantic import BaseModel
from datetime import date, datetime
from uuid import UUID
from typing import Optional
class PropositionCreate(BaseModel):
reunion_id: Optional[UUID] = None
sujet: str
description: Optional[str] = None
class PropositionOut(BaseModel):
id: UUID
reunion_id: Optional[UUID] = None
type_decision: str = "proposition"
sujet: str
description: Optional[str] = None
proposeur_prenom: str
secondeur_prenom: Optional[str] = None
statut: str
numero_resolution: Optional[str] = None
date_vote: Optional[date] = None
date_adoption: Optional[date] = None
etant_donne_que: Optional[str] = None
groupe_a_decide_de: Optional[str] = None
note: Optional[str] = None
candidature_id: Optional[UUID] = None
cree_le: datetime
modifie_le: datetime
date_reunion: Optional[datetime] = None
model_config = {"from_attributes": True}
class PropositionVote(BaseModel):
statut: str # adoptee ou rejetee
note: Optional[str] = None
etant_donne_que: Optional[str] = None
groupe_a_decide_de: Optional[str] = None
reunion_id: Optional[UUID] = None