From e5324e214c65281e50631911b62a767b4fbdb70e Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Fri, 10 Dec 2021 15:03:29 +0100 Subject: [PATCH] =?UTF-8?q?ignore=20UE=20et=20mati=C3=A8res=20dans=20tri?= =?UTF-8?q?=20modules=20BUT=20(tableau=20bord=20sem.)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_moduleimpl.py | 40 +++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/app/scodoc/sco_moduleimpl.py b/app/scodoc/sco_moduleimpl.py index 2ffed0f4..cd884564 100644 --- a/app/scodoc/sco_moduleimpl.py +++ b/app/scodoc/sco_moduleimpl.py @@ -35,6 +35,7 @@ import app.scodoc.notesdb as ndb from app.scodoc.sco_permissions import Permission from app.scodoc.sco_exceptions import ScoValueError, AccessDenied from app import log +from app import models from app.scodoc import scolog from app.scodoc import sco_formsemestre from app.scodoc import sco_cache @@ -124,11 +125,11 @@ def do_moduleimpl_edit(args, formsemestre_id=None, cnx=None): def moduleimpl_withmodule_list( moduleimpl_id=None, formsemestre_id=None, module_id=None -): +) -> list: """Liste les moduleimpls et ajoute dans chacun l'UE, la matière et le module auxquels ils appartiennent. 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. """ from app.scodoc import sco_edit_ue @@ -142,6 +143,8 @@ def moduleimpl_withmodule_list( "module_id": module_id, } ) + if not modimpls: + return [] ues = {} matieres = {} modules = {} @@ -163,17 +166,30 @@ def moduleimpl_withmodule_list( )[0] mi["matiere"] = matieres[matiere_id] - # 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"], + mod = modimpls[0]["module"] + formation = models.Formation.query.get(mod["formation_id"]) + + if formation.is_apc(): + # tri par numero_module + modimpls.sort( + key=lambda x: ( + x["module"]["numero"], + 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