forked from ScoDoc/ScoDoc
Jurys BUT: corrige tri étudiants, ajout des groupes
This commit is contained in:
parent
baccf122fe
commit
f1d8b6dedf
@ -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
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user