From dfbe0dc3eda0dd542fa4784a2ff95d20f67a7b9d Mon Sep 17 00:00:00 2001 From: Iziram Date: Tue, 23 Jan 2024 09:14:38 +0100 Subject: [PATCH] =?UTF-8?q?Assiduites=20:=20fix=20bug=20modif=20justif=20(?= =?UTF-8?q?signal=C3=A9=20par=20Sebastien)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/assiduites.py | 5 +++++ app/views/assiduites.py | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/assiduites.py b/app/models/assiduites.py index 620b2758..9c110992 100644 --- a/app/models/assiduites.py +++ b/app/models/assiduites.py @@ -629,6 +629,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 07d8a691..8015f1e4 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