Update opolka/ScoDoc from ScoDoc/ScoDoc #2

Merged
opolka merged 1272 commits from ScoDoc/ScoDoc:master into master 2024-05-27 09:11:04 +02:00
3 changed files with 51 additions and 22 deletions
Showing only changes of commit 9cdab8d1ed - Show all commits

View File

@ -155,7 +155,9 @@ class ResSemBUTTag(ResultatsSemestreBUT, pe_tabletags.TableTag):
# pe_affichage.pe_print(f" -> Traitement du tag {tag}") # pe_affichage.pe_print(f" -> Traitement du tag {tag}")
info_tag = tags_dict["personnalises"][tag] info_tag = tags_dict["personnalises"][tag]
# Les moyennes générales par UEs # 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 # Mémorise les moyennes
self.moyennes_tags[tag] = pe_moytag.MoyennesTag( self.moyennes_tags[tag] = pe_moytag.MoyennesTag(
tag, tag,
@ -176,7 +178,7 @@ class ResSemBUTTag(ResultatsSemestreBUT, pe_tabletags.TableTag):
# Ajoute la moyenne générale par ressources # Ajoute la moyenne générale par ressources
if "moyennes_ue_res_sae" in options and options["moyennes_ue_res_sae"]: if "moyennes_ue_res_sae" in options and options["moyennes_ue_res_sae"]:
moy_res_gen = self.compute_moy_ues_tag( 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( self.moyennes_tags["ressources"] = pe_moytag.MoyennesTag(
"ressources", "ressources",
@ -187,7 +189,9 @@ class ResSemBUTTag(ResultatsSemestreBUT, pe_tabletags.TableTag):
# Ajoute la moyenne générale par saes # Ajoute la moyenne générale par saes
if "moyennes_ue_res_sae" in options and options["moyennes_ue_res_sae"]: 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( self.moyennes_tags["saes"] = pe_moytag.MoyennesTag(
"saes", "saes",
pe_moytag.CODE_MOY_UE, pe_moytag.CODE_MOY_UE,
@ -264,16 +268,21 @@ class ResSemBUTTag(ResultatsSemestreBUT, pe_tabletags.TableTag):
return capitalisations return capitalisations
def compute_moy_ues_tag( 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: ) -> pd.DataFrame:
"""Calcule la moyenne par UE des étudiants pour un tag donné, """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 : info_tag détermine les modules pris en compte :
* si non `None`, seuls les modules rattachés au tag sont 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 * 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) 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 : `pole` détermine les modules pris en compte :
* si `pole` vaut `ModuleType.RESSOURCE`, seules les ressources sont prises * 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), * si `pole` vaut `None` (ou toute autre valeur),
tous les modules sont pris en compte (moyenne d'UEs) 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, 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**. et pour chacun leur éventuel coefficient de **repondération**.
Args:
ues_inscr_parcours_df: L'inscription aux UEs
Returns: Returns:
Le dataframe des moyennes du tag par UE 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] colonnes = [ue.id for ue in self.ues_standards]
moyennes_ues_tag = moyennes_ues_tag[colonnes] 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 # Transforme les UEs en acronyme
acronymes = [self.ues_to_acronymes[ue.id] for ue in self.ues_standards] acronymes = [self.ues_to_acronymes[ue.id] for ue in self.ues_standards]
moyennes_ues_tag.columns = acronymes moyennes_ues_tag.columns = acronymes

View File

@ -106,9 +106,6 @@ class TableTag(object):
Returns: Returns:
Le dataframe complet de synthèse Le dataframe complet de synthèse
""" """
if not self.is_significatif():
return None
# Les tags visés # Les tags visés
tags_tries = self.get_all_significant_tags() tags_tries = self.get_all_significant_tags()
if not tags_cibles: if not tags_cibles:
@ -123,6 +120,9 @@ class TableTag(object):
else: else:
df = pd.DataFrame(index=self.etudids) df = pd.DataFrame(index=self.etudids)
if not self.is_significatif():
return df
# Ajout des données par tags # Ajout des données par tags
for tag in tags_cibles: for tag in tags_cibles:
if tag in self.moyennes_tags: 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) 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() pe_affichage.pe_start_log()
self.diplome = diplome self.diplome = diplome
"L'année du diplome" "L'année du diplome"
@ -151,7 +162,11 @@ class JuryPE(object):
self._gen_xls_synthese_jury_par_tag(zipfile) self._gen_xls_synthese_jury_par_tag(zipfile)
self._gen_html_synthese_par_etudiant(zipfile) self._gen_html_synthese_par_etudiant(zipfile)
except Exception as e: 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 # et le log
self._add_log_to_zip(zipfile) self._add_log_to_zip(zipfile)
@ -222,14 +237,15 @@ class JuryPE(object):
) as writer: ) as writer:
onglets = [] onglets = []
for res_sem_tag in self.ressembuttags.values(): for res_sem_tag in self.ressembuttags.values():
onglet = res_sem_tag.get_repr(verbose=True) if res_sem_tag.is_significatif():
onglet = onglet.replace("Semestre ", "S") onglet = res_sem_tag.get_repr(verbose=True)
onglets += ["📊" + onglet] onglet = onglet.replace("Semestre ", "S")
df = res_sem_tag.to_df() onglets += ["📊" + onglet]
# Conversion colonnes en multiindex df = res_sem_tag.to_df(options=self.options)
df = convert_colonnes_to_multiindex(df) # Conversion colonnes en multiindex
# écriture dans l'onglet df = convert_colonnes_to_multiindex(df)
df.to_excel(writer, onglet, index=True, header=True) # écriture dans l'onglet
df.to_excel(writer, onglet, index=True, header=True)
pe_affichage.pe_print( pe_affichage.pe_print(
f"--> Export excel de {', '.join(onglets)}", info=True f"--> Export excel de {', '.join(onglets)}", info=True
) )
@ -316,7 +332,7 @@ class JuryPE(object):
if sxtag.is_significatif(): if sxtag.is_significatif():
onglet = sxtag.get_repr(verbose=False) onglet = sxtag.get_repr(verbose=False)
onglets += ["📊" + onglet] onglets += ["📊" + onglet]
df = sxtag.to_df() df = sxtag.to_df(options=self.options)
# Conversion colonnes en multiindex # Conversion colonnes en multiindex
df = convert_colonnes_to_multiindex(df) df = convert_colonnes_to_multiindex(df)
@ -416,7 +432,7 @@ class JuryPE(object):
onglet = rcs_tag.get_repr(verbose=False) onglet = rcs_tag.get_repr(verbose=False)
onglets += ["📊" + onglet] onglets += ["📊" + onglet]
df = rcs_tag.to_df() df = rcs_tag.to_df(options=self.options)
# Conversion colonnes en multiindex # Conversion colonnes en multiindex
df = convert_colonnes_to_multiindex(df) df = convert_colonnes_to_multiindex(df)
onglets += ["📊" + onglet] onglets += ["📊" + onglet]
@ -508,7 +524,7 @@ class JuryPE(object):
if interclass.is_significatif(): if interclass.is_significatif():
onglet = interclass.get_repr() onglet = interclass.get_repr()
onglets += ["📊" + onglet] onglets += ["📊" + onglet]
df = interclass.to_df(cohorte="Promo") df = interclass.to_df(cohorte="Promo", options=self.options)
# Conversion colonnes en multiindex # Conversion colonnes en multiindex
df = convert_colonnes_to_multiindex(df) df = convert_colonnes_to_multiindex(df)
onglets += [onglet] onglets += [onglet]