ignore UE et matières dans tri modules BUT (tableau bord sem.)

This commit is contained in:
Emmanuel Viennet 2021-12-10 15:03:29 +01:00
parent 517ee8bd2d
commit e5324e214c

View File

@ -35,6 +35,7 @@ import app.scodoc.notesdb as ndb
from app.scodoc.sco_permissions import Permission from app.scodoc.sco_permissions import Permission
from app.scodoc.sco_exceptions import ScoValueError, AccessDenied from app.scodoc.sco_exceptions import ScoValueError, AccessDenied
from app import log from app import log
from app import models
from app.scodoc import scolog from app.scodoc import scolog
from app.scodoc import sco_formsemestre from app.scodoc import sco_formsemestre
from app.scodoc import sco_cache from app.scodoc import sco_cache
@ -124,11 +125,11 @@ def do_moduleimpl_edit(args, formsemestre_id=None, cnx=None):
def moduleimpl_withmodule_list( def moduleimpl_withmodule_list(
moduleimpl_id=None, formsemestre_id=None, module_id=None moduleimpl_id=None, formsemestre_id=None, module_id=None
): ) -> list:
"""Liste les moduleimpls et ajoute dans chacun """Liste les moduleimpls et ajoute dans chacun
l'UE, la matière et le module auxquels ils appartiennent. l'UE, la matière et le module auxquels ils appartiennent.
Tri la liste par semestre/UE/numero_matiere/numero_module. Tri la liste par semestre/UE/numero_matiere/numero_module.
(sauf pour le BUT: ignore UEs et matières dans le tri)
Attention: Cette fonction fait partie de l'API ScoDoc 7 et est publiée. Attention: Cette fonction fait partie de l'API ScoDoc 7 et est publiée.
""" """
from app.scodoc import sco_edit_ue from app.scodoc import sco_edit_ue
@ -142,6 +143,8 @@ def moduleimpl_withmodule_list(
"module_id": module_id, "module_id": module_id,
} }
) )
if not modimpls:
return []
ues = {} ues = {}
matieres = {} matieres = {}
modules = {} modules = {}
@ -163,17 +166,30 @@ def moduleimpl_withmodule_list(
)[0] )[0]
mi["matiere"] = matieres[matiere_id] mi["matiere"] = matieres[matiere_id]
# tri par semestre/UE/numero_matiere/numero_module mod = modimpls[0]["module"]
modimpls.sort( formation = models.Formation.query.get(mod["formation_id"])
key=lambda x: (
x["ue"]["numero"], if formation.is_apc():
x["ue"]["ue_id"], # tri par numero_module
x["matiere"]["numero"], modimpls.sort(
x["matiere"]["matiere_id"], key=lambda x: (
x["module"]["numero"], x["module"]["numero"],
x["module"]["code"], x["module"]["code"],
)
)
else:
# Formations classiques, avec matières:
# tri par semestre/UE/numero_matiere/numero_module
modimpls.sort(
key=lambda x: (
x["ue"]["numero"],
x["ue"]["ue_id"],
x["matiere"]["numero"],
x["matiere"]["matiere_id"],
x["module"]["numero"],
x["module"]["code"],
)
) )
)
return modimpls return modimpls