1
0
forked from ScoDoc/ScoDoc

Ajout de l'option "Afficher les colonnes min/max/moy"

This commit is contained in:
Cléo Baras 2024-02-27 18:16:25 +01:00
parent b9b9a172c7
commit ba28d5f3c8
6 changed files with 36 additions and 16 deletions

View File

@ -52,6 +52,7 @@ class ParametrageClasseurPE(FlaskForm):
) )
min_max_moy = BooleanField("Afficher les colonnes min/max/moy") min_max_moy = BooleanField("Afficher les colonnes min/max/moy")
synthese_individuelle_etud = BooleanField( synthese_individuelle_etud = BooleanField(
"Générer les synthèses HTML étudiant par étudiant" "Générer les synthèses HTML étudiant par étudiant"
) )

View File

@ -280,7 +280,7 @@ class InterClassTag(pe_tabletags.TableTag):
return None return None
def compute_df_synthese_moyennes_tag( def compute_df_synthese_moyennes_tag(
self, tag, aggregat=None, type_colonnes=False self, tag, aggregat=None, type_colonnes=False, options={"min_max_moy": True}
) -> pd.DataFrame: ) -> pd.DataFrame:
"""Construit le dataframe retraçant pour les données des moyennes """Construit le dataframe retraçant pour les données des moyennes
pour affichage dans la synthèse du jury PE. (cf. to_df()) pour affichage dans la synthèse du jury PE. (cf. to_df())
@ -322,8 +322,7 @@ class InterClassTag(pe_tabletags.TableTag):
if tag in rcstag.moyennes_tags: if tag in rcstag.moyennes_tags:
moytag: pd.DataFrame = rcstag.moyennes_tags[tag] moytag: pd.DataFrame = rcstag.moyennes_tags[tag]
df_moytag = moytag.to_df( df_moytag = moytag.to_df(
aggregat=aggregat, aggregat=aggregat, cohorte="Groupe", options=options
cohorte="Groupe",
) )
# Modif les colonnes au regard du 1er df_moytag significatif lu # Modif les colonnes au regard du 1er df_moytag significatif lu

View File

@ -18,7 +18,12 @@ class Moyenne:
] ]
"""Colonnes du df""" """Colonnes du df"""
COLONNES_SYNTHESE = ["note", "rang", "min", "max", "moy"] @classmethod
def get_colonnes_synthese(cls, with_min_max_moy):
if with_min_max_moy:
return ["note", "rang", "min", "max", "moy"]
else:
return ["note", "rang"]
def __init__(self, notes: pd.Series): def __init__(self, notes: pd.Series):
"""Classe centralisant la synthèse des moyennes/classements d'une série """Classe centralisant la synthèse des moyennes/classements d'une série
@ -97,9 +102,12 @@ class Moyenne:
return df return df
def get_df_synthese(self): def get_df_synthese(self, with_min_max_moy=None):
"""Renvoie le df de synthese limité aux colonnes de synthese""" """Renvoie le df de synthese limité aux colonnes de synthese"""
df = self.df[self.COLONNES_SYNTHESE].copy() colonnes_synthese = Moyenne.get_colonnes_synthese(
with_min_max_moy=with_min_max_moy
)
df = self.df[colonnes_synthese].copy()
df["rang"] = df["rang"].replace("nan", "") df["rang"] = df["rang"].replace("nan", "")
return df return df

View File

@ -107,15 +107,18 @@ class MoyennesTag:
return moy_gen_tag return moy_gen_tag
def to_df(self, aggregat=None, cohorte=None) -> pd.DataFrame: def to_df(
self, aggregat=None, cohorte=None, options={"min_max_moy": True}
) -> pd.DataFrame:
"""Renvoie le df synthétisant l'ensemble des données """Renvoie le df synthétisant l'ensemble des données
connues connues
Adapte les intitulés des colonnes aux données fournies Adapte les intitulés des colonnes aux données fournies
(nom d'aggrégat, type de cohorte). (nom d'aggrégat, type de cohorte).
`pole` détermine les modules à prendre en compte dans la moyenne (None=tous,
RESSOURCES ou SAES)
""" """
if "min_max_moy" not in options or options["min_max_moy"]:
with_min_max_moy = True
else:
with_min_max_moy = False
etudids_sorted = sorted(self.etudids) etudids_sorted = sorted(self.etudids)
@ -124,20 +127,27 @@ class MoyennesTag:
# Ajout des notes pour tous les champs # Ajout des notes pour tous les champs
champs = list(self.champs) champs = list(self.champs)
for champ in champs: for champ in champs:
df_champ = self.moyennes_gen[champ].get_df_synthese() # le dataframe df_champ = self.moyennes_gen[champ].get_df_synthese(
with_min_max_moy=with_min_max_moy
) # le dataframe
# Renomme les colonnes # Renomme les colonnes
cols = [ cols = [
get_colonne_df(aggregat, self.tag, champ, cohorte, critere) get_colonne_df(aggregat, self.tag, champ, cohorte, critere)
for critere in pe_moy.Moyenne.COLONNES_SYNTHESE for critere in pe_moy.Moyenne.get_colonnes_synthese(
with_min_max_moy=with_min_max_moy
)
] ]
df_champ.columns = cols df_champ.columns = cols
df = df.join(df_champ) df = df.join(df_champ)
# Ajoute la moy générale # Ajoute la moy générale
df_moy_gen = self.moyenne_gen.get_df_synthese() df_moy_gen = self.moyenne_gen.get_df_synthese(with_min_max_moy=with_min_max_moy)
cols = [ cols = [
get_colonne_df(aggregat, self.tag, CHAMP_GENERAL, cohorte, critere) get_colonne_df(aggregat, self.tag, CHAMP_GENERAL, cohorte, critere)
for critere in pe_moy.Moyenne.COLONNES_SYNTHESE for critere in pe_moy.Moyenne.get_colonnes_synthese(
with_min_max_moy=with_min_max_moy
)
] ]
df_moy_gen.columns = cols df_moy_gen.columns = cols
df = df.join(df_moy_gen) df = df.join(df_moy_gen)

View File

@ -89,6 +89,7 @@ class TableTag(object):
aggregat=None, aggregat=None,
tags_cibles=None, tags_cibles=None,
cohorte=None, cohorte=None,
options={"min_max_moy": True},
) -> pd.DataFrame: ) -> pd.DataFrame:
"""Renvoie un dataframe listant toutes les données """Renvoie un dataframe listant toutes les données
des moyennes/classements/nb_inscrits/min/max/moy des moyennes/classements/nb_inscrits/min/max/moy
@ -126,7 +127,7 @@ class TableTag(object):
for tag in tags_cibles: for tag in tags_cibles:
if tag in self.moyennes_tags: if tag in self.moyennes_tags:
moy_tag_df = self.moyennes_tags[tag].to_df( moy_tag_df = self.moyennes_tags[tag].to_df(
aggregat=aggregat, cohorte=cohorte aggregat=aggregat, cohorte=cohorte, options=options
) )
df = df.join(moy_tag_df) df = df.join(moy_tag_df)

View File

@ -682,7 +682,7 @@ class JuryPE(object):
if interclass.is_significatif(): if interclass.is_significatif():
# Le dataframe du classement sur le groupe # Le dataframe du classement sur le groupe
df_groupe = interclass.compute_df_synthese_moyennes_tag( df_groupe = interclass.compute_df_synthese_moyennes_tag(
tag, aggregat=aggregat, type_colonnes=False tag, aggregat=aggregat, type_colonnes=False, options=self.options
) )
if not df_groupe.empty: if not df_groupe.empty:
aff_aggregat += [aggregat] aff_aggregat += [aggregat]
@ -694,6 +694,7 @@ class JuryPE(object):
aggregat=aggregat, aggregat=aggregat,
tags_cibles=[tag], tags_cibles=[tag],
cohorte="Promo", cohorte="Promo",
options=self.options,
) )
if not df_promo.empty: if not df_promo.empty: