forked from ScoDoc/ScoDoc
Assiduité : erreurs dates hors semestres #907
This commit is contained in:
parent
65a4b31fbd
commit
80bd02114e
@ -301,6 +301,7 @@ def ajout_assiduite_etud() -> str | Response:
|
||||
|
||||
def _get_dates_from_assi_form(
|
||||
form: AjoutAssiOrJustForm,
|
||||
etud: Identite,
|
||||
from_justif: bool = False,
|
||||
) -> tuple[
|
||||
bool, datetime.datetime | None, datetime.datetime | None, datetime.datetime | None
|
||||
@ -393,6 +394,34 @@ def _get_dates_from_assi_form(
|
||||
dt_debut_tz_server = dt_debut_tz_server.replace(hour=0, minute=0)
|
||||
dt_fin_tz_server = dt_fin_tz_server.replace(hour=23, minute=59)
|
||||
|
||||
# Vérification dates contenu dans un semestre de l'étudiant
|
||||
dates_semestres: list[tuple[datetime.date, datetime.date]] = [
|
||||
(sem.date_debut, sem.date_fin) for sem in etud.get_formsemestres()
|
||||
]
|
||||
|
||||
# Vérification date début
|
||||
if not any(
|
||||
[
|
||||
dt_debut_tz_server.date() >= deb and dt_debut_tz_server.date() <= fin
|
||||
for deb, fin in dates_semestres
|
||||
]
|
||||
):
|
||||
form.set_error(
|
||||
"La date de début n'appartient à aucun semestre de l'étudiant",
|
||||
form.date_debut,
|
||||
)
|
||||
|
||||
# Vérification date fin
|
||||
if form.date_fin.data and not any(
|
||||
[
|
||||
dt_fin_tz_server.date() >= deb and dt_fin_tz_server.date() <= fin
|
||||
for deb, fin in dates_semestres
|
||||
]
|
||||
):
|
||||
form.set_error(
|
||||
"La date de fin n'appartient à aucun semestre de l'étudiant", form.date_fin
|
||||
)
|
||||
|
||||
dt_entry_date_tz_server = (
|
||||
scu.TIME_ZONE.localize(dt_entry_date) if dt_entry_date else None
|
||||
)
|
||||
@ -415,7 +444,7 @@ def _record_assiduite_etud(
|
||||
dt_debut_tz_server,
|
||||
dt_fin_tz_server,
|
||||
dt_entry_date_tz_server,
|
||||
) = _get_dates_from_assi_form(form)
|
||||
) = _get_dates_from_assi_form(form, etud)
|
||||
# Le module (avec "autre")
|
||||
mod_data = form.modimpl.data
|
||||
if mod_data:
|
||||
@ -724,7 +753,7 @@ def _record_justificatif_etud(
|
||||
dt_debut_tz_server,
|
||||
dt_fin_tz_server,
|
||||
dt_entry_date_tz_server,
|
||||
) = _get_dates_from_assi_form(form, from_justif=True)
|
||||
) = _get_dates_from_assi_form(form, etud, from_justif=True)
|
||||
if not ok:
|
||||
log("_record_justificatif_etud: dates invalides")
|
||||
form.set_error("Erreur: dates invalides")
|
||||
|
Loading…
Reference in New Issue
Block a user