groupe-meditation/backend/app/schemas/phase1.py
2026-03-04 14:01:00 -05:00

74 lines
1.7 KiB
Python

"""Schémas Phase 1 — Saisies hebdomadaires."""
from pydantic import BaseModel
from datetime import date, datetime
from uuid import UUID
from typing import Optional
# ── S1 Collecte ──
class CollecteCreate(BaseModel):
date_collecte: date
montant: float
reunion_id: Optional[UUID] = None
class CollecteOut(BaseModel):
id: UUID
date_collecte: date
montant: float
saisi_par_prenom: Optional[str] = None
cree_le: datetime
model_config = {"from_attributes": True}
# ── S4 Rapport de réunion ──
class ReunionCreate(BaseModel):
type: str = "reguliere"
date_reunion: datetime
theme: Optional[str] = None
annonces: Optional[list[str]] = None
note: Optional[str] = None
class ReunionOut(BaseModel):
id: UUID
type: str
date_reunion: datetime
animateur_prenom: Optional[str] = None
theme: Optional[str] = None
annonces: Optional[list[str]] = None
note: Optional[str] = None
cree_le: datetime
model_config = {"from_attributes": True}
# ── S5 Dépense (6 champs) ──
class DepenseCreate(BaseModel):
date_depense: date
montant: float
qui: UUID # membre_id
quoi: str
paye: bool = False
methode: str # DU, VIREMENT, CHEQUE, COLLECTE
class DepenseOut(BaseModel):
id: UUID
date_depense: date
montant: float
qui_prenom: Optional[str] = None
quoi: str
paye: bool
methode: str
saisi_par_prenom: Optional[str] = None
cree_le: datetime
model_config = {"from_attributes": True}
class DepenseUpdate(BaseModel):
paye: Optional[bool] = None
methode: Optional[str] = None
quoi: Optional[str] = None