From 196dbab2980c044bd85d258fb5507e6ea09f7eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9o=20BARAS=20=28IUT1=20Grenoble=29?= Date: Mon, 5 Feb 2024 19:46:16 +0100 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20nomenclature=20:=20intercla?= =?UTF-8?q?ss=20=3D>=20RCSInterclasseTag=20+=20m=C3=A9nage=20et=20refonte?= =?UTF-8?q?=20codes=20(=C3=A9tat=20interm=C3=A9diaire=20n=C2=B02)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/pe/pe_interclasstag.py | 36 ++++++------ app/pe/pe_jury.py | 56 +++++++++---------- app/pe/{pe_trajectoiretag.py => pe_rcstag.py} | 0 3 files changed, 46 insertions(+), 46 deletions(-) rename app/pe/{pe_trajectoiretag.py => pe_rcstag.py} (100%) diff --git a/app/pe/pe_interclasstag.py b/app/pe/pe_interclasstag.py index 1280b5eab..bd91a9e76 100644 --- a/app/pe/pe_interclasstag.py +++ b/app/pe/pe_interclasstag.py @@ -2,25 +2,25 @@ from app.comp import moy_sem from app.pe.pe_tabletags import TableTag, MoyenneTag from app.pe.pe_etudiant import EtudiantsJuryPE from app.pe.pe_rcs import RCS, RCSsJuryPE -from app.pe.pe_trajectoiretag import RCSTag +from app.pe.pe_rcstag import RCSTag import pandas as pd import numpy as np -class AggregatInterclasseTag(TableTag): +class RCSInterclasseTag(TableTag): # ------------------------------------------------------------------------------------------------------------------- def __init__( self, - nom_aggregat: str, + nom_rcs: str, etudiants: EtudiantsJuryPE, - trajectoires_jury_pe: RCSsJuryPE, - trajectoires_taggues: dict[tuple, RCSTag], + rcss_jury_pe: RCSsJuryPE, + rcss_tags: dict[tuple, RCSTag], ): """ Interclasse l'ensemble des étudiants diplômés à une année - donnée (celle du jury), pour un aggrégat donné (par ex: 'S2', '3S') + donnée (celle du jury), pour un RCS donné (par ex: 'S2', '3S') en reportant : * les moyennes obtenues sur la trajectoire qu'il ont suivi pour atteindre le numéro de semestre de fin de l'aggrégat (indépendamment de son @@ -29,12 +29,12 @@ class AggregatInterclasseTag(TableTag): """ TableTag.__init__(self) - self.aggregat = nom_aggregat - """Aggrégat de l'interclassement""" + self.nom_rcs = nom_rcs + """Le nom du RCS interclassé""" self.nom = self.get_repr() - """Les étudiants diplômés et leurs trajectoires (cf. trajectoires.suivis)""" # TODO + """Les étudiants diplômés et leurs rcss""" # TODO self.diplomes_ids = etudiants.etudiants_diplomes self.etudiants_diplomes = {etudid for etudid in self.diplomes_ids} # pour les exports sous forme de dataFrame @@ -44,17 +44,17 @@ class AggregatInterclasseTag(TableTag): } # Les trajectoires (et leur version tagguées), en ne gardant que celles associées à l'aggrégat - self.trajectoires: dict[int, RCS] = {} + self.rcss: dict[int, RCS] = {} """Ensemble des trajectoires associées à l'aggrégat""" - for trajectoire_id in trajectoires_jury_pe.rcss: - trajectoire = trajectoires_jury_pe.rcss[trajectoire_id] - if trajectoire_id[0] == nom_aggregat: - self.trajectoires[trajectoire_id] = trajectoire + for trajectoire_id in rcss_jury_pe.rcss: + trajectoire = rcss_jury_pe.rcss[trajectoire_id] + if trajectoire_id[0] == nom_rcs: + self.rcss[trajectoire_id] = trajectoire self.trajectoires_taggues: dict[int, RCS] = {} """Ensemble des trajectoires tagguées associées à l'aggrégat""" - for trajectoire_id in self.trajectoires: - self.trajectoires_taggues[trajectoire_id] = trajectoires_taggues[ + for trajectoire_id in self.rcss: + self.trajectoires_taggues[trajectoire_id] = rcss_tags[ trajectoire_id ] @@ -64,7 +64,7 @@ class AggregatInterclasseTag(TableTag): """Association entre chaque étudiant et la trajectoire tagguée à prendre en compte pour l'aggrégat""" for etudid in self.diplomes_ids: - self.suivi[etudid] = trajectoires_jury_pe.suivi[etudid][nom_aggregat] + self.suivi[etudid] = rcss_jury_pe.suivi[etudid][nom_rcs] self.tags_sorted = self.do_taglist() """Liste des tags (triés par ordre alphabétique)""" @@ -84,7 +84,7 @@ class AggregatInterclasseTag(TableTag): def get_repr(self) -> str: """Une représentation textuelle""" - return f"Aggrégat {self.aggregat}" + return f"Aggrégat {self.nom_rcs}" def do_taglist(self): """Synthétise les tags à partir des trajectoires_tagguées diff --git a/app/pe/pe_jury.py b/app/pe/pe_jury.py index d600a984a..ba56763a0 100644 --- a/app/pe/pe_jury.py +++ b/app/pe/pe_jury.py @@ -54,8 +54,8 @@ from app.pe.pe_etudiant import * from app.pe.pe_rcs import * import app.pe.pe_comp as pe_comp from app.pe.pe_semtag import SemestreTag -from app.pe.pe_interclasstag import AggregatInterclasseTag -from app.pe.pe_trajectoiretag import RCSTag +from app.pe.pe_interclasstag import RCSInterclasseTag +from app.pe.pe_rcstag import RCSTag import app.pe.pe_affichage as pe_affichage import pandas as pd @@ -94,8 +94,8 @@ class JuryPE(object): else: self._gen_xls_diplomes(zipfile) self._gen_xls_semestre_taggues(zipfile) - self._gen_xls_trajectoires(zipfile) - self._gen_xls_aggregats(zipfile) + self._gen_xls_rcss_tags(zipfile) + self._gen_xls_interclassements_rcss(zipfile) self._gen_xls_synthese_jury_par_tag(zipfile) self._gen_xls_synthese_par_etudiant(zipfile) @@ -129,14 +129,14 @@ class JuryPE(object): def _gen_xls_semestre_taggues(self, zipfile: ZipFile): "Génère les semestres taggués (avec le calcul des moyennes) pour le jury PE" pe_affichage.pe_print("*** Génère les semestres taggués") - self.semestres_taggues = compute_semestres_tag(self.etudiants) + self.sems_tags = compute_semestres_tag(self.etudiants) # Intègre le bilan des semestres taggués au zip final output = io.BytesIO() with pd.ExcelWriter( # pylint: disable=abstract-class-instantiated output, engine="openpyxl" ) as writer: - for formsemestretag in self.semestres_taggues.values(): + for formsemestretag in self.sems_tags.values(): onglet = formsemestretag.nom df = formsemestretag.df_moyennes_et_classements() # écriture dans l'onglet @@ -150,22 +150,22 @@ class JuryPE(object): path="details", ) - def _gen_xls_trajectoires(self, zipfile: ZipFile): - """Génère les trajectoires (combinaison de semestres suivis - par un étudiant pour atteindre le semestre final d'un aggrégat) + def _gen_xls_rcss_tags(self, zipfile: ZipFile): + """Génère les RCS (combinaisons de semestres suivis + par un étudiant) """ pe_affichage.pe_print( "*** Génère les trajectoires (différentes combinaisons de semestres) des étudiants" ) - self.trajectoires = RCSsJuryPE(self.diplome) - self.trajectoires.cree_rcss(self.etudiants) + self.rcss = RCSsJuryPE(self.diplome) + self.rcss.cree_rcss(self.etudiants) # Génère les moyennes par tags des trajectoires pe_affichage.pe_print( - "*** Calcule les moyennes par tag des trajectoires possibles" + "*** Calcule les moyennes par tag des RCS possibles" ) - self.trajectoires_tagguees = compute_trajectoires_tag( - self.trajectoires, self.etudiants, self.semestres_taggues + self.rcss_tags = compute_trajectoires_tag( + self.rcss, self.etudiants, self.sems_tags ) # Intègre le bilan des trajectoires tagguées au zip final @@ -173,26 +173,26 @@ class JuryPE(object): with pd.ExcelWriter( # pylint: disable=abstract-class-instantiated output, engine="openpyxl" ) as writer: - for trajectoire_tagguee in self.trajectoires_tagguees.values(): - onglet = trajectoire_tagguee.get_repr() - df = trajectoire_tagguee.df_moyennes_et_classements() + for rcs_tag in self.rcss_tags.values(): + onglet = rcs_tag.get_repr() + df = rcs_tag.df_moyennes_et_classements() # écriture dans l'onglet df.to_excel(writer, onglet, index=True, header=True) output.seek(0) self.add_file_to_zip( zipfile, - f"trajectoires_taggues_{self.diplome}.xlsx", + f"RCS_taggues_{self.diplome}.xlsx", output.read(), path="details", ) - def _gen_xls_aggregats(self, zipfile: ZipFile): - """Intègre le bilan des aggrégats (interclassé par promo) au zip""" + def _gen_xls_interclassements_rcss(self, zipfile: ZipFile): + """Intègre le bilan des RCS (interclassé par promo) au zip""" # Génère les interclassements (par promo et) par (nom d') aggrégat pe_affichage.pe_print("*** Génère les interclassements par aggrégat") self.interclassements_taggues = compute_interclassements( - self.etudiants, self.trajectoires, self.trajectoires_tagguees + self.etudiants, self.rcss, self.rcss_tags ) # Intègre le bilan des aggrégats (interclassé par promo) au zip final @@ -276,7 +276,7 @@ class JuryPE(object): self.zipdata.seek(0) return self.zipdata - def do_tags_list(self, interclassements: dict[str, AggregatInterclasseTag]): + def do_tags_list(self, interclassements: dict[str, RCSInterclasseTag]): """La liste des tags extraites des interclassements""" tags = [] for aggregat in interclassements: @@ -338,10 +338,10 @@ class JuryPE(object): # considéré trajectoires_tagguees = [] for etudid in etudids: - trajectoire = self.trajectoires.suivi[etudid][aggregat] + trajectoire = self.rcss.suivi[etudid][aggregat] if trajectoire: tid = trajectoire.rcs_id - trajectoire_tagguee = self.trajectoires_tagguees[tid] + trajectoire_tagguee = self.rcss_tags[tid] if ( tag in trajectoire_tagguee.moyennes_tags and trajectoire_tagguee not in trajectoires_tagguees @@ -485,9 +485,9 @@ class JuryPE(object): ) # La trajectoire de l'étudiant sur l'aggrégat - trajectoire = self.trajectoires.suivi[etudid][aggregat] + trajectoire = self.rcss.suivi[etudid][aggregat] if trajectoire: - trajectoire_tagguee = self.trajectoires_tagguees[ + trajectoire_tagguee = self.rcss_tags[ trajectoire.rcs_id ] if tag in trajectoire_tagguee.moyennes_tags: @@ -619,7 +619,7 @@ def compute_interclassements( aggregats_interclasses_taggues = {} for nom_aggregat in TOUS_LES_RCS: pe_affichage.pe_print(f" --> Interclassement {nom_aggregat}") - interclass = AggregatInterclasseTag( + interclass = RCSInterclasseTag( nom_aggregat, etudiants, trajectoires_jury_pe, trajectoires_tagguees ) aggregats_interclasses_taggues[nom_aggregat] = interclass @@ -669,7 +669,7 @@ def get_defaut_dict_synthese_aggregat(nom_rcs: str, diplome: int) -> dict: def get_dict_synthese_aggregat( aggregat: str, trajectoire_tagguee: RCSTag, - interclassement_taggue: AggregatInterclasseTag, + interclassement_taggue: RCSInterclasseTag, etudid: int, tag: str, diplome: int, diff --git a/app/pe/pe_trajectoiretag.py b/app/pe/pe_rcstag.py similarity index 100% rename from app/pe/pe_trajectoiretag.py rename to app/pe/pe_rcstag.py