From 95b7f813ff618f670726d19bb1d1e64ecdb2dc02 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Thu, 1 Dec 2022 13:00:14 +0100 Subject: [PATCH] =?UTF-8?q?BUT:=20dispenses=20d'UE=20capitalis=C3=A9es.=20?= =?UTF-8?q?Voir=20#537.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/comp/moy_ue.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/app/comp/moy_ue.py b/app/comp/moy_ue.py index bf158669..90a9c332 100644 --- a/app/comp/moy_ue.py +++ b/app/comp/moy_ue.py @@ -212,6 +212,31 @@ def notes_sem_load_cube(formsemestre: FormSemestre) -> tuple: ) +def load_dispense_ues( + formsemestre: FormSemestre, etudids: pd.Index, ues: list[UniteEns] +) -> set[tuple[int, int]]: + """Construit l'ensemble des + etudids = modimpl_inscr_df.index, # les etudids + ue_ids : modimpl_coefs_df.index, # les UE du formsemestre sans les UE bonus sport + + Résultat: set de (etudid, ue_id). + """ + dispense_ues = set() + ue_sem_by_code = {ue.ue_code: ue for ue in ues} + # Prend toutes les dispenses obtenues par des étudiants de ce formsemestre, + # puis filtre sur inscrits et code d'UE UE + for dispense_ue in DispenseUE.query.join( + Identite, FormSemestreInscription + ).filter_by(formsemestre_id=formsemestre.id): + if dispense_ue.etudid in etudids: + # UE dans le semestre avec même code ? + ue = ue_sem_by_code.get(dispense_ue.ue.ue_code) + if ue is not None: + dispense_ues.add((dispense_ue.etudid, ue.id)) + + return dispense_ues + + def compute_ue_moys_apc( sem_cube: np.array, etuds: list,