Jurys BUT: corrige tri étudiants, ajout des groupes

This commit is contained in:
Emmanuel Viennet 2022-06-23 10:13:18 +02:00
parent baccf122fe
commit f1d8b6dedf
2 changed files with 33 additions and 27 deletions

View File

@ -152,6 +152,28 @@ class RowCollector:
self.titles[f"_{col_id}_class"] = classes
self.idx += 1
def add_etud_cells(self, etud: Identite, formsemestre: FormSemestre):
"Les cells code, nom, prénom etc."
# --- Codes (seront cachés, mais exportés en excel)
self.add_cell("etudid", "etudid", etud.id, "codes")
self.add_cell("code_nip", "code_nip", etud.code_nip or "", "codes")
# --- Identité étudiant (adapté de res_comon/get_table_recap, à factoriser XXX TODO)
self.add_cell("civilite_str", "Civ.", etud.civilite_str, "identite_detail")
self.add_cell("nom_disp", "Nom", etud.nom_disp(), "identite_detail")
self["_nom_disp_order"] = etud.sort_key
self.add_cell("prenom", "Prénom", etud.prenom, "identite_detail")
self.add_cell("nom_short", "Nom", etud.nom_short, "identite_court")
self["_nom_short_order"] = etud.sort_key
self["_nom_short_target"] = url_for(
"notes.formsemestre_bulletinetud",
scodoc_dept=g.scodoc_dept,
formsemestre_id=formsemestre.id,
etudid=etud.id,
)
self["_nom_short_target_attrs"] = f'class="etudinfo" id="{etud.id}"'
self["_nom_disp_target"] = self["_nom_short_target"]
self["_nom_disp_target_attrs"] = self["_nom_short_target_attrs"]
def add_ue_cell(self, ue: UniteEns, val):
"cell de moyenne d'UE"
col_id = f"moy_ue_{ue.id}"
@ -190,40 +212,20 @@ def get_table_jury_but(
) -> tuple[list[dict], list[str], list[str]]:
"""Construit la table des résultats annuels pour le jury BUT"""
res2: ResultatsSemestreBUT = res_sem.load_formsemestre_results(formsemestre2)
rcues = []
titles = {} # column_id : title
rows = []
for etudid in formsemestre2.etuds_inscriptions:
etud = Identite.query.get(etudid)
etud: Identite = Identite.query.get(etudid)
deca = jury_but.DecisionsProposeesAnnee(etud, formsemestre2)
row = RowCollector(titles=titles)
# --- Codes (seront cachés, mais exportés en excel)
row.add_cell("etudid", "etudid", etudid, "codes")
row.add_cell("code_nip", "code_nip", etud.code_nip or "", "codes")
# --- Identité étudiant (adapté de res_comon/get_table_recap, à factoriser XXX TODO)
row.add_cell("civilite_str", "Civ.", etud.civilite_str, "identite_detail")
row.add_cell("nom_disp", "Nom", etud.nom_disp(), "identite_detail")
row["_nom_disp_order"] = etud.sort_key
row.add_cell("prenom", "Prénom", etud.prenom, "identite_detail")
row.add_cell("nom_short", "Nom", etud.nom_short, "identite_court")
row["_nom_short_order"] = etud.sort_key
row["_nom_short_target"] = url_for(
"notes.formsemestre_bulletinetud",
scodoc_dept=g.scodoc_dept,
formsemestre_id=formsemestre2.id,
etudid=etudid,
)
row["_nom_short_target_attrs"] = f'class="etudinfo" id="{etudid}"'
row["_nom_disp_target"] = row["_nom_short_target"]
row["_nom_disp_target_attrs"] = row["_nom_short_target_attrs"]
row.add_etud_cells(etud, formsemestre2)
# --- Les RCUEs
for rcue in deca.rcues_annee:
row.add_ue_cell(rcue.ue_1, rcue.moy_ue_1)
row.add_ue_cell(rcue.ue_2, rcue.moy_ue_2)
row.add_rcue_cell(rcue)
# Le lien de saisie
# --- Le lien de saisie
if not readonly:
row.add_cell(
"lien_saisie",
@ -237,6 +239,8 @@ def get_table_jury_but(
""",
)
rows.append(row.row)
res2.recap_add_partitions(rows, titles)
column_ids = [title for title in titles if not title.startswith("_")]
column_ids.sort(key=lambda col_id: titles.get("_" + col_id + "_col_order", 1000))
rows.sort(key=lambda row: row["_nom_disp_order"])
return rows, titles, column_ids

View File

@ -664,7 +664,7 @@ class ResultatsSemestre(ResultatsCache):
)
rows.append(row)
self._recap_add_partitions(rows, titles)
self.recap_add_partitions(rows, titles)
self._recap_add_admissions(rows, titles)
# tri par rang croissant
@ -771,7 +771,9 @@ class ResultatsSemestre(ResultatsCache):
"apo": row_apo,
}
def _recap_etud_groups_infos(self, etudid: int, row: dict, titles: dict):
def _recap_etud_groups_infos(
self, etudid: int, row: dict, titles: dict
): # XXX non utilisé
"""Table recap: ajoute à row les colonnes sur les groupes pour cet etud"""
# dec = self.get_etud_decision_sem(etudid)
# if dec:
@ -827,7 +829,7 @@ class ResultatsSemestre(ResultatsCache):
else:
row[f"_{cid}_class"] = "admission"
def _recap_add_partitions(self, rows: list[dict], titles: dict):
def recap_add_partitions(self, rows: list[dict], titles: dict):
"""Ajoute les colonnes indiquant les groupes
rows est une liste de dict avec une clé "etudid"
Les colonnes ont la classe css "partition"