diff --git a/app/models/assiduites.py b/app/models/assiduites.py index 5d59c07f..89ab7fe6 100644 --- a/app/models/assiduites.py +++ b/app/models/assiduites.py @@ -628,6 +628,11 @@ def compute_assiduites_justified( list[int]: la liste des assiduités qui ont été justifiées. """ # 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 if justificatifs is None: justificatifs: list[Justificatif] = Justificatif.query.filter_by( diff --git a/app/views/assiduites.py b/app/views/assiduites.py index b44ea0d4..bd6a1b12 100644 --- a/app/views/assiduites.py +++ b/app/views/assiduites.py @@ -726,7 +726,12 @@ def _record_justificatif_etud( db.session.rollback() return False 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) flash(message) return True