This commit is contained in:
Emmanuel Viennet 2024-02-28 12:12:40 +01:00
commit 9cdab8d1ed
3 changed files with 51 additions and 22 deletions

View File

@ -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

View File

@ -106,9 +106,6 @@ class TableTag(object):
Returns:
Le dataframe complet de synthèse
"""
if not self.is_significatif():
return None
# Les tags visés
tags_tries = self.get_all_significant_tags()
if not tags_cibles:
@ -123,6 +120,9 @@ class TableTag(object):
else:
df = pd.DataFrame(index=self.etudids)
if not self.is_significatif():
return df
# Ajout des données par tags
for tag in tags_cibles:
if tag in self.moyennes_tags:

View File

@ -90,7 +90,18 @@ class JuryPE(object):
diplome : l'année d'obtention du diplome BUT et du jury de PE (généralement février XXXX)
"""
def __init__(self, diplome: int, formsemestre_id_base, options=None):
def __init__(
self,
diplome: int,
formsemestre_id_base,
options={
"moyennes_tags": True,
"moyennes_ue_res_sae": True,
"moyennes_ues_rcues": True,
"min_max_moy": False,
"publipostage": False,
},
):
pe_affichage.pe_start_log()
self.diplome = diplome
"L'année du diplome"
@ -151,7 +162,11 @@ class JuryPE(object):
self._gen_xls_synthese_jury_par_tag(zipfile)
self._gen_html_synthese_par_etudiant(zipfile)
except Exception as e:
raise e
if pe_affichage.PE_DEBUG == True:
raise e
else:
pe_affichage.pe_print(str(e))
# raise e
# et le log
self._add_log_to_zip(zipfile)
@ -222,14 +237,15 @@ class JuryPE(object):
) as writer:
onglets = []
for res_sem_tag in self.ressembuttags.values():
onglet = res_sem_tag.get_repr(verbose=True)
onglet = onglet.replace("Semestre ", "S")
onglets += ["📊" + onglet]
df = res_sem_tag.to_df()
# Conversion colonnes en multiindex
df = convert_colonnes_to_multiindex(df)
# écriture dans l'onglet
df.to_excel(writer, onglet, index=True, header=True)
if res_sem_tag.is_significatif():
onglet = res_sem_tag.get_repr(verbose=True)
onglet = onglet.replace("Semestre ", "S")
onglets += ["📊" + onglet]
df = res_sem_tag.to_df(options=self.options)
# Conversion colonnes en multiindex
df = convert_colonnes_to_multiindex(df)
# écriture dans l'onglet
df.to_excel(writer, onglet, index=True, header=True)
pe_affichage.pe_print(
f"--> Export excel de {', '.join(onglets)}", info=True
)
@ -316,7 +332,7 @@ class JuryPE(object):
if sxtag.is_significatif():
onglet = sxtag.get_repr(verbose=False)
onglets += ["📊" + onglet]
df = sxtag.to_df()
df = sxtag.to_df(options=self.options)
# Conversion colonnes en multiindex
df = convert_colonnes_to_multiindex(df)
@ -416,7 +432,7 @@ class JuryPE(object):
onglet = rcs_tag.get_repr(verbose=False)
onglets += ["📊" + onglet]
df = rcs_tag.to_df()
df = rcs_tag.to_df(options=self.options)
# Conversion colonnes en multiindex
df = convert_colonnes_to_multiindex(df)
onglets += ["📊" + onglet]
@ -508,7 +524,7 @@ class JuryPE(object):
if interclass.is_significatif():
onglet = interclass.get_repr()
onglets += ["📊" + onglet]
df = interclass.to_df(cohorte="Promo")
df = interclass.to_df(cohorte="Promo", options=self.options)
# Conversion colonnes en multiindex
df = convert_colonnes_to_multiindex(df)
onglets += [onglet]