Modif. clé trie étudiants et utilisation dans éditeur partition.

This commit is contained in:
Emmanuel Viennet 2024-03-24 14:34:55 +01:00 committed by Iziram
parent a1f5340935
commit 61f9dddeb6
4 changed files with 34 additions and 24 deletions

View File

@ -38,7 +38,7 @@ from app.scodoc import sco_groups
from app.scodoc.sco_permissions import Permission from app.scodoc.sco_permissions import Permission
from app.scodoc.sco_utils import ModuleType from app.scodoc.sco_utils import ModuleType
import app.scodoc.sco_utils as scu import app.scodoc.sco_utils as scu
from app.tables.recap import TableRecap from app.tables.recap import TableRecap, RowRecap
@bp.route("/formsemestre/<int:formsemestre_id>") @bp.route("/formsemestre/<int:formsemestre_id>")
@ -543,16 +543,30 @@ def formsemestre_resultat(formsemestre_id: int):
formsemestre: FormSemestre = query.first_or_404(formsemestre_id) formsemestre: FormSemestre = query.first_or_404(formsemestre_id)
app.set_sco_dept(formsemestre.departement.acronym) app.set_sco_dept(formsemestre.departement.acronym)
res: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre) res: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre)
table = TableRecap( # Ajoute le groupe de chaque partition,
res, convert_values=convert_values, include_evaluations=False, mode_jury=False
)
# Supprime les champs inutiles (mise en forme)
rows = table.to_list()
# Ajoute le groupe de chaque partition:
etud_groups = sco_groups.get_formsemestre_etuds_groups(formsemestre_id) etud_groups = sco_groups.get_formsemestre_etuds_groups(formsemestre_id)
for row in rows:
row["partitions"] = etud_groups.get(row["etudid"], {})
class RowRecapAPI(RowRecap):
"""Pour table avec partitions et sort_key"""
def add_etud_cols(self):
"""Ajoute colonnes étudiant: codes, noms"""
super().add_etud_cols()
self.add_cell("partitions", "partitions", etud_groups.get(self.etud.id, {}))
self.add_cell("sort_key", "sort_key", self.etud.sort_key)
table = TableRecap(
res,
convert_values=convert_values,
include_evaluations=False,
mode_jury=False,
row_class=RowRecapAPI,
)
rows = table.to_list()
# for row in rows:
# row["partitions"] = etud_groups.get(row["etudid"], {})
return rows return rows

View File

@ -334,16 +334,14 @@ class Identite(models.ScoDocModel):
return f"{(self.nom_usuel or self.nom or '?').upper()} {(self.prenom or '')[:2].capitalize()}." return f"{(self.nom_usuel or self.nom or '?').upper()} {(self.prenom or '')[:2].capitalize()}."
@cached_property @cached_property
def sort_key(self) -> tuple: def sort_key(self) -> str:
"clé pour tris par ordre alphabétique" "clé pour tris par ordre alphabétique"
# Note: scodoc7 utilisait sco_etud.etud_sort_key, à mettre à jour # Note: scodoc7 utilisait sco_etud.etud_sort_key, à mettre à jour
# si on modifie cette méthode. # si on modifie cette méthode.
return ( return scu.sanitize_string(
scu.sanitize_string( (self.nom_usuel or self.nom or "") + ";" + (self.prenom or ""),
self.nom_usuel or self.nom or "", remove_spaces=False remove_spaces=False,
).lower(), ).lower()
scu.sanitize_string(self.prenom or "", remove_spaces=False).lower(),
)
def get_first_email(self, field="email") -> str: def get_first_email(self, field="email") -> str:
"Le mail associé à la première adresse de l'étudiant, ou None" "Le mail associé à la première adresse de l'étudiant, ou None"

View File

@ -122,16 +122,14 @@ def format_pays(s):
return "" return ""
def etud_sort_key(etud: dict) -> tuple: def etud_sort_key(etud: dict) -> str:
"""Clé de tri pour les étudiants représentés par des dict (anciens codes). """Clé de tri pour les étudiants représentés par des dict (anciens codes).
Equivalent moderne: identite.sort_key Equivalent moderne: identite.sort_key
""" """
return ( return scu.sanitize_string(
scu.sanitize_string( (etud.get("nom_usuel") or etud["nom"] or "") + ";" + (etud["prenom"] or ""),
etud.get("nom_usuel") or etud["nom"] or "", remove_spaces=False remove_spaces=False,
).lower(), ).lower()
scu.sanitize_string(etud["prenom"] or "", remove_spaces=False).lower(),
)
_identiteEditor = ndb.EditableTable( _identiteEditor = ndb.EditableTable(

View File

@ -86,7 +86,7 @@ span.calendarEdit {
let etudiants = await fetchData("/ScoDoc/{{formsemestre.departement.acronym}}/api/formsemestre/" + formsemestre_id + "/resultats"); let etudiants = await fetchData("/ScoDoc/{{formsemestre.departement.acronym}}/api/formsemestre/" + formsemestre_id + "/resultats");
etudiants.sort((a, b) => { etudiants.sort((a, b) => {
return a.nom_short.localeCompare(b.nom_short) return a.sort_key.localeCompare(b.sort_key)
}) })
processDatas(partitions, etudiants); processDatas(partitions, etudiants);