forked from ScoDoc/ScoDoc
Modif. clé trie étudiants et utilisation dans éditeur partition.
This commit is contained in:
parent
edf989ee04
commit
3787e0145a
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -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(
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user