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")
synthese_individuelle_etud = BooleanField(
"Générer les synthèses HTML étudiant par étudiant"
)

View File

@ -280,7 +280,7 @@ class InterClassTag(pe_tabletags.TableTag):
return None
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:
"""Construit le dataframe retraçant pour les données des moyennes
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:
moytag: pd.DataFrame = rcstag.moyennes_tags[tag]
df_moytag = moytag.to_df(
aggregat=aggregat,
cohorte="Groupe",
aggregat=aggregat, cohorte="Groupe", options=options
)
# Modif les colonnes au regard du 1er df_moytag significatif lu

View File

@ -18,7 +18,12 @@ class Moyenne:
]
"""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):
"""Classe centralisant la synthèse des moyennes/classements d'une série
@ -97,9 +102,12 @@ class Moyenne:
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"""
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", "")
return df

View File

@ -107,15 +107,18 @@ class MoyennesTag:
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
connues
Adapte les intitulés des colonnes aux données fournies
(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)
@ -124,20 +127,27 @@ class MoyennesTag:
# Ajout des notes pour tous les champs
champs = list(self.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
cols = [
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 = df.join(df_champ)
# 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 = [
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 = df.join(df_moy_gen)

View File

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

View File

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