From 060b7ad7cdef89cfe1469d617b7943bfb04e071e Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Sat, 25 Jun 2022 23:22:20 +0200 Subject: [PATCH] Fix: Bulletin BUT: calcul des UE de chaque etud --- app/but/bulletin_but.py | 6 ++---- app/comp/res_but.py | 14 +++++++++++--- app/comp/res_common.py | 6 +++--- app/models/but_refcomp.py | 2 +- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/but/bulletin_but.py b/app/but/bulletin_but.py index 3c58157e..279cf86e 100644 --- a/app/but/bulletin_but.py +++ b/app/but/bulletin_but.py @@ -244,7 +244,7 @@ class BulletinBUT: f"{fmt_note(bonus_vect[ue.id])} sur {ue.acronyme}" for ue in res.ues if ue.type != UE_SPORT - and res.modimpls_in_ue(ue.id, etudid) + and res.modimpls_in_ue(ue, etudid) and ue.id in res.bonus_ues and bonus_vect[ue.id] > 0.0 ] @@ -275,9 +275,7 @@ class BulletinBUT: nb_inscrits = self.res.get_inscriptions_counts()[scu.INSCRIT] published = (not formsemestre.bul_hide_xml) or force_publishing if formsemestre.formation.referentiel_competence is None: - etud_ues_ids = { - ue.id for ue in res.ues if res.modimpls_in_ue(ue.id, etud.id) - } + etud_ues_ids = {ue.id for ue in res.ues if res.modimpls_in_ue(ue, etud.id)} else: etud_ues_ids = res.etud_ues_ids(etud.id) diff --git a/app/comp/res_but.py b/app/comp/res_but.py index 10eef7c6..14cf6312 100644 --- a/app/comp/res_but.py +++ b/app/comp/res_but.py @@ -157,16 +157,24 @@ class ResultatsSemestreBUT(NotesTableCompat): """ return self.modimpl_coefs_df.loc[ue.id].sum() - def modimpls_in_ue(self, ue_id, etudid, with_bonus=True) -> list[ModuleImpl]: + def modimpls_in_ue(self, ue: UniteEns, etudid, with_bonus=True) -> list[ModuleImpl]: """Liste des modimpl ayant des coefs non nuls vers cette UE et auxquels l'étudiant est inscrit. Inclus modules bonus le cas échéant. """ # sert pour l'affichage ou non de l'UE sur le bulletin et la table recap - coefs = self.modimpl_coefs_df # row UE, cols modimpl + if ue.type == UE_SPORT: + return [ + modimpl + for modimpl in self.formsemestre.modimpls_sorted + if modimpl.module.ue.id == ue.id + and self.modimpl_inscr_df[modimpl.id][etudid] + ] + coefs = self.modimpl_coefs_df # row UE (sans bonus), cols modimpl modimpls = [ modimpl for modimpl in self.formsemestre.modimpls_sorted - if (coefs[modimpl.id][ue_id] != 0) + if modimpl.module.ue.type != UE_SPORT + and (coefs[modimpl.id][ue.id] != 0) and self.modimpl_inscr_df[modimpl.id][etudid] ] if not with_bonus: diff --git a/app/comp/res_common.py b/app/comp/res_common.py index 3b5f0896..86230f06 100644 --- a/app/comp/res_common.py +++ b/app/comp/res_common.py @@ -187,7 +187,7 @@ class ResultatsSemestre(ResultatsCache): ues = sorted(list(ues), key=lambda x: x.numero or 0) return ues - def modimpls_in_ue(self, ue_id, etudid, with_bonus=True) -> list[ModuleImpl]: + def modimpls_in_ue(self, ue: UniteEns, etudid, with_bonus=True) -> list[ModuleImpl]: """Liste des modimpl de cette UE auxquels l'étudiant est inscrit. Utile en formations classiques, surchargée pour le BUT. Inclus modules bonus le cas échéant. @@ -197,7 +197,7 @@ class ResultatsSemestre(ResultatsCache): modimpls = [ modimpl for modimpl in self.formsemestre.modimpls_sorted - if modimpl.module.ue.id == ue_id + if modimpl.module.ue.id == ue.id and self.modimpl_inscr_df[modimpl.id][etudid] ] if not with_bonus: @@ -572,7 +572,7 @@ class ResultatsSemestre(ResultatsCache): # Les moyennes des modules (ou ressources et SAÉs) dans cette UE idx_malus = idx # place pour colonne malus à gauche des modules idx += 1 - for modimpl in self.modimpls_in_ue(ue.id, etudid, with_bonus=False): + for modimpl in self.modimpls_in_ue(ue, etudid, with_bonus=False): if ue_status["is_capitalized"]: val = "-c-" else: diff --git a/app/models/but_refcomp.py b/app/models/but_refcomp.py index 04fed318..4e4b4b27 100644 --- a/app/models/but_refcomp.py +++ b/app/models/but_refcomp.py @@ -283,7 +283,7 @@ class ApcNiveau(db.Model, XMLModel): raise ValueError("annee invalide pour un parcours BUT") if referentiel_competence is None: raise ScoValueError( - "pas de référentiel de compétences associé à la formation !" + "Pas de référentiel de compétences associé à la formation !" ) annee_formation = f"BUT{annee}" if parcour is None: