groupe-meditation/backend/app/core/reunions.py
2026-05-25 17:39:38 -04:00

38 lines
1.2 KiB
Python

"""Règles communes liées aux dates de réunion."""
from datetime import date as dt_date
from calendar import monthrange
JOURS_SEMAINE = {
"lundi": 0,
"mardi": 1,
"mercredi": 2,
"jeudi": 3,
"vendredi": 4,
"samedi": 5,
"dimanche": 6,
}
def jour_reunion_attendu(groupe) -> int | None:
if not getattr(groupe, "jour_reunion", None):
return None
return JOURS_SEMAINE.get(groupe.jour_reunion.lower())
def date_correspond_au_jour_reunion(groupe, date_reunion: dt_date) -> bool:
jour = jour_reunion_attendu(groupe)
return True if jour is None else date_reunion.weekday() == jour
def date_assemblee_affaires_du_mois(annee: int, mois: int, jour_cible: int, ordre: str) -> dt_date:
dates = []
for jour in range(1, monthrange(annee, mois)[1] + 1):
date = dt_date(annee, mois, jour)
if date.weekday() == jour_cible:
dates.append(date)
if not dates:
return dt_date(annee, mois, 1)
if ordre == "derniere":
return dates[-1]
index = {"premiere": 0, "deuxieme": 1, "troisieme": 2, "quatrieme": 3}.get(ordre, 0)
return dates[index] if index < len(dates) else dates[-1]