Files
gesthub/web/services/evenement_service.py
2026-08-21 09:12:02 +02:00

43 lines
1.4 KiB
Python

"""evenement_service.py — Logique métier du module Planning (EXF-09, EXF-10)."""
from datetime import datetime
from models import evenement_model
from services import audit_service
class ValidationError(Exception):
pass
def _parse(dt_str):
try:
return datetime.fromisoformat(dt_str)
except (TypeError, ValueError) as exc:
raise ValidationError(f"Date invalide : {dt_str!r}") from exc
def list_evenements(db):
return evenement_model.fetch_all(db)
def create_evenement(db, titre, description, date_debut, date_fin, createur_sub, ip=None):
if not titre or not titre.strip():
raise ValidationError("Le titre est obligatoire.")
debut = _parse(date_debut)
fin = _parse(date_fin)
if fin < debut:
raise ValidationError("La date de fin doit être postérieure à la date de début.")
new_id = evenement_model.insert(db, titre.strip(), description, debut, fin, createur_sub)
audit_service.log(db, "CREATE_EVENEMENT", f"evenement:{new_id}", "SUCCESS", createur_sub, ip)
return new_id
def delete_evenement(db, evenement_id, createur_sub, ip=None):
existing = evenement_model.get(db, evenement_id)
if not existing:
raise LookupError(f"Événement {evenement_id} introuvable")
rows = evenement_model.delete(db, evenement_id)
audit_service.log(db, "DELETE_EVENEMENT", f"evenement:{evenement_id}", "SUCCESS", createur_sub, ip)
return rows