diff --git a/app/pe/moys/pe_ressemtag.py b/app/pe/moys/pe_ressemtag.py index c0d473171..cff92b94e 100644 --- a/app/pe/moys/pe_ressemtag.py +++ b/app/pe/moys/pe_ressemtag.py @@ -155,7 +155,9 @@ class ResSemBUTTag(ResultatsSemestreBUT, pe_tabletags.TableTag): # pe_affichage.pe_print(f" -> Traitement du tag {tag}") info_tag = tags_dict["personnalises"][tag] # Les moyennes générales par UEs - moy_ues_tag = self.compute_moy_ues_tag(info_tag=info_tag, pole=None) + moy_ues_tag = self.compute_moy_ues_tag( + self.ues_inscr_parcours_df, info_tag=info_tag, pole=None + ) # Mémorise les moyennes self.moyennes_tags[tag] = pe_moytag.MoyennesTag( tag, @@ -176,7 +178,7 @@ class ResSemBUTTag(ResultatsSemestreBUT, pe_tabletags.TableTag): # Ajoute la moyenne générale par ressources if "moyennes_ue_res_sae" in options and options["moyennes_ue_res_sae"]: moy_res_gen = self.compute_moy_ues_tag( - info_tag=None, pole=ModuleType.RESSOURCE + self.ues_inscr_parcours_df, info_tag=None, pole=ModuleType.RESSOURCE ) self.moyennes_tags["ressources"] = pe_moytag.MoyennesTag( "ressources", @@ -187,7 +189,9 @@ class ResSemBUTTag(ResultatsSemestreBUT, pe_tabletags.TableTag): # Ajoute la moyenne générale par saes if "moyennes_ue_res_sae" in options and options["moyennes_ue_res_sae"]: - moy_saes_gen = self.compute_moy_ues_tag(info_tag=None, pole=ModuleType.SAE) + moy_saes_gen = self.compute_moy_ues_tag( + self.ues_inscr_parcours_df, info_tag=None, pole=ModuleType.SAE + ) self.moyennes_tags["saes"] = pe_moytag.MoyennesTag( "saes", pe_moytag.CODE_MOY_UE, @@ -264,16 +268,21 @@ class ResSemBUTTag(ResultatsSemestreBUT, pe_tabletags.TableTag): return capitalisations def compute_moy_ues_tag( - self, info_tag: dict[int, dict] = None, pole=None + self, + ues_inscr_parcours_df: pd.DataFrame, + info_tag: dict[int, dict] = None, + pole=None, ) -> pd.DataFrame: """Calcule la moyenne par UE des étudiants pour un tag donné, - en ayant connaissance des informations sur le tag. + en ayant connaissance des informations sur le tag et des inscriptions des étudiants aux différentes UEs. info_tag détermine les modules pris en compte : * si non `None`, seuls les modules rattachés au tag sont pris en compte * si `None`, tous les modules (quelque soit leur rattachement au tag) sont pris en compte (sert au calcul de la moyenne générale par ressource ou SAE) + ues_inscr_parcours_df détermine les UEs pour lesquels le calcul d'une moyenne à un sens. + `pole` détermine les modules pris en compte : * si `pole` vaut `ModuleType.RESSOURCE`, seules les ressources sont prises @@ -282,10 +291,11 @@ class ResSemBUTTag(ResultatsSemestreBUT, pe_tabletags.TableTag): * si `pole` vaut `None` (ou toute autre valeur), tous les modules sont pris en compte (moyenne d'UEs) - Les informations sur le tag sont un dictionnaire listant les modimpl_id rattachés au tag, et pour chacun leur éventuel coefficient de **repondération**. + Args: + ues_inscr_parcours_df: L'inscription aux UEs Returns: Le dataframe des moyennes du tag par UE """ @@ -332,6 +342,9 @@ class ResSemBUTTag(ResultatsSemestreBUT, pe_tabletags.TableTag): colonnes = [ue.id for ue in self.ues_standards] moyennes_ues_tag = moyennes_ues_tag[colonnes] + # Applique le masque d'inscription aux UE pour ne conserver que les UE dans lequel l'étudiant est inscrit + moyennes_ues_tag = moyennes_ues_tag[colonnes] * ues_inscr_parcours_df[colonnes] + # Transforme les UEs en acronyme acronymes = [self.ues_to_acronymes[ue.id] for ue in self.ues_standards] moyennes_ues_tag.columns = acronymes