forked from ScoDoc/ScoDoc
Merge branch 'pe-but-v4' of https://scodoc.org/git/cleo/ScoDoc-PE
This commit is contained in:
commit
9cdab8d1ed
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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]
|
||||||
|
Loading…
Reference in New Issue
Block a user