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.titles[f"_{col_id}_class"] = classes
|
||||||
self.idx += 1
|
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):
|
def add_ue_cell(self, ue: UniteEns, val):
|
||||||
"cell de moyenne d'UE"
|
"cell de moyenne d'UE"
|
||||||
col_id = f"moy_ue_{ue.id}"
|
col_id = f"moy_ue_{ue.id}"
|
||||||
@ -190,40 +212,20 @@ def get_table_jury_but(
|
|||||||
) -> tuple[list[dict], list[str], list[str]]:
|
) -> tuple[list[dict], list[str], list[str]]:
|
||||||
"""Construit la table des résultats annuels pour le jury BUT"""
|
"""Construit la table des résultats annuels pour le jury BUT"""
|
||||||
res2: ResultatsSemestreBUT = res_sem.load_formsemestre_results(formsemestre2)
|
res2: ResultatsSemestreBUT = res_sem.load_formsemestre_results(formsemestre2)
|
||||||
rcues = []
|
|
||||||
|
|
||||||
titles = {} # column_id : title
|
titles = {} # column_id : title
|
||||||
rows = []
|
rows = []
|
||||||
for etudid in formsemestre2.etuds_inscriptions:
|
for etudid in formsemestre2.etuds_inscriptions:
|
||||||
etud = Identite.query.get(etudid)
|
etud: Identite = Identite.query.get(etudid)
|
||||||
deca = jury_but.DecisionsProposeesAnnee(etud, formsemestre2)
|
deca = jury_but.DecisionsProposeesAnnee(etud, formsemestre2)
|
||||||
row = RowCollector(titles=titles)
|
row = RowCollector(titles=titles)
|
||||||
# --- Codes (seront cachés, mais exportés en excel)
|
row.add_etud_cells(etud, formsemestre2)
|
||||||
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"]
|
|
||||||
# --- Les RCUEs
|
# --- Les RCUEs
|
||||||
for rcue in deca.rcues_annee:
|
for rcue in deca.rcues_annee:
|
||||||
row.add_ue_cell(rcue.ue_1, rcue.moy_ue_1)
|
row.add_ue_cell(rcue.ue_1, rcue.moy_ue_1)
|
||||||
row.add_ue_cell(rcue.ue_2, rcue.moy_ue_2)
|
row.add_ue_cell(rcue.ue_2, rcue.moy_ue_2)
|
||||||
row.add_rcue_cell(rcue)
|
row.add_rcue_cell(rcue)
|
||||||
|
# --- Le lien de saisie
|
||||||
# Le lien de saisie
|
|
||||||
if not readonly:
|
if not readonly:
|
||||||
row.add_cell(
|
row.add_cell(
|
||||||
"lien_saisie",
|
"lien_saisie",
|
||||||
@ -237,6 +239,8 @@ def get_table_jury_but(
|
|||||||
""",
|
""",
|
||||||
)
|
)
|
||||||
rows.append(row.row)
|
rows.append(row.row)
|
||||||
|
res2.recap_add_partitions(rows, titles)
|
||||||
column_ids = [title for title in titles if not title.startswith("_")]
|
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))
|
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
|
return rows, titles, column_ids
|
||||||
|
@ -664,7 +664,7 @@ class ResultatsSemestre(ResultatsCache):
|
|||||||
)
|
)
|
||||||
rows.append(row)
|
rows.append(row)
|
||||||
|
|
||||||
self._recap_add_partitions(rows, titles)
|
self.recap_add_partitions(rows, titles)
|
||||||
self._recap_add_admissions(rows, titles)
|
self._recap_add_admissions(rows, titles)
|
||||||
|
|
||||||
# tri par rang croissant
|
# tri par rang croissant
|
||||||
@ -771,7 +771,9 @@ class ResultatsSemestre(ResultatsCache):
|
|||||||
"apo": row_apo,
|
"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"""
|
"""Table recap: ajoute à row les colonnes sur les groupes pour cet etud"""
|
||||||
# dec = self.get_etud_decision_sem(etudid)
|
# dec = self.get_etud_decision_sem(etudid)
|
||||||
# if dec:
|
# if dec:
|
||||||
@ -827,7 +829,7 @@ class ResultatsSemestre(ResultatsCache):
|
|||||||
else:
|
else:
|
||||||
row[f"_{cid}_class"] = "admission"
|
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
|
"""Ajoute les colonnes indiquant les groupes
|
||||||
rows est une liste de dict avec une clé "etudid"
|
rows est une liste de dict avec une clé "etudid"
|
||||||
Les colonnes ont la classe css "partition"
|
Les colonnes ont la classe css "partition"
|
||||||
|
Loading…
Reference in New Issue
Block a user