Assiduites : fix bug modif justif (signalé par Sebastien)

This commit is contained in:
Iziram 2024-01-23 09:14:38 +01:00
parent 2a239ab92f
commit dfbe0dc3ed
2 changed files with 11 additions and 1 deletions

View File

@ -629,6 +629,11 @@ def compute_assiduites_justified(
list[int]: la liste des assiduités qui ont été justifiées. list[int]: la liste des assiduités qui ont été justifiées.
""" """
# TODO à optimiser (car très long avec 40000 assiduités) # TODO à optimiser (car très long avec 40000 assiduités)
# On devrait :
# - récupérer uniquement les assiduités qui sont sur la période des justificatifs donnés
# - Pour chaque assiduité trouvée, il faut récupérer les justificatifs qui la justifie
# - Si au moins un justificatif valide couvre la période de l'assiduité alors on la justifie
# Si on ne donne pas de justificatifs on prendra par défaut tous les justificatifs de l'étudiant # Si on ne donne pas de justificatifs on prendra par défaut tous les justificatifs de l'étudiant
if justificatifs is None: if justificatifs is None:
justificatifs: list[Justificatif] = Justificatif.query.filter_by( justificatifs: list[Justificatif] = Justificatif.query.filter_by(

View File

@ -726,7 +726,12 @@ def _record_justificatif_etud(
db.session.rollback() db.session.rollback()
return False return False
db.session.commit() db.session.commit()
compute_assiduites_justified(etud.id, [justif]) # FIX TEMPORAIRE:
# on reprend toutes les assiduités et tous les justificatifs
# pour utiliser le "reset" (remise en "non_just") des assiduités
# (à terme, il faudrait ne recalculer que les assiduités impactées)
# VOIR TODO dans compute_assiduites_justified
compute_assiduites_justified(etud.id, reset=True)
scass.simple_invalidate_cache(justif.to_dict(), etud.id) scass.simple_invalidate_cache(justif.to_dict(), etud.id)
flash(message) flash(message)
return True return True