forked from ScoDoc/ScoDoc
Ajout de l'option "Afficher les colonnes min/max/moy"
This commit is contained in:
parent
b9b9a172c7
commit
ba28d5f3c8
@ -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"
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user