From bc3427702ea1497861349c069616a414eb93ba8b Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet <emmanuel.viennet@gmail.com> Date: Sun, 8 Sep 2024 23:52:32 +0200 Subject: [PATCH] Minor code tweak: ue sort keys --- app/but/jury_but.py | 2 +- app/comp/jury.py | 2 +- app/models/formsemestre.py | 6 ++--- app/models/modules.py | 2 +- app/scodoc/sco_formsemestre_validation.py | 33 ++++++++++++++--------- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/app/but/jury_but.py b/app/but/jury_but.py index 4f3fb5c9..a12877d9 100644 --- a/app/but/jury_but.py +++ b/app/but/jury_but.py @@ -1108,7 +1108,7 @@ def list_ue_parcour_etud( ues = ( formsemestre.formation.query_ues_parcour(parcour) .filter(UniteEns.semestre_idx == formsemestre.semestre_id) - .order_by(UniteEns.numero) + .order_by(UniteEns.numero, UniteEns.acronyme) .all() ) return [ue for ue in ues if (etud.id, ue.id) not in res.dispense_ues] diff --git a/app/comp/jury.py b/app/comp/jury.py index 6e701a54..899d3ad8 100644 --- a/app/comp/jury.py +++ b/app/comp/jury.py @@ -95,7 +95,7 @@ class ValidationsSemestre(ResultatsCache): for decision in ( decisions_jury_q.filter(db.text("ue_id is not NULL")) .join(UniteEns) - .order_by(UniteEns.numero) + .order_by(UniteEns.numero, UniteEns.acronyme) ): if decision.etudid not in decisions_jury_ues: decisions_jury_ues[decision.etudid] = {} diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py index 86535265..990eea67 100644 --- a/app/models/formsemestre.py +++ b/app/models/formsemestre.py @@ -471,7 +471,7 @@ class FormSemestre(models.ScoDocModel): ) if not with_sport: sem_ues = sem_ues.filter(UniteEns.type != codes_cursus.UE_SPORT) - ues = sem_ues.order_by(UniteEns.numero).all() + ues = sem_ues.order_by(UniteEns.numero, UniteEns.acronyme).all() _cache[key] = ues return ues @@ -1347,14 +1347,14 @@ class FormSemestre(models.ScoDocModel): etudid=etudid, formsemestre_id=self.id ) .join(UniteEns) - .order_by(UniteEns.numero) + .order_by(UniteEns.numero, UniteEns.acronyme) .all() ) # Validations BUT: vals_rcues = ( ApcValidationRCUE.query.filter_by(etudid=etudid, formsemestre_id=self.id) .join(UniteEns, ApcValidationRCUE.ue1) - .order_by(UniteEns.numero) + .order_by(UniteEns.numero, UniteEns.acronyme) .all() ) vals_annee = ( # issues de cette année scolaire seulement diff --git a/app/models/modules.py b/app/models/modules.py index ea15181c..8e1d8c5b 100644 --- a/app/models/modules.py +++ b/app/models/modules.py @@ -386,7 +386,7 @@ class Module(models.ScoDocModel): ues = ( self.formation.ues.filter_by(semestre_idx=self.ue.semestre_idx) .filter(UniteEns.type != UE_SPORT) - .order_by(UniteEns.numero) + .order_by(UniteEns.numero, UniteEns.acronyme) .all() ) if not ues: diff --git a/app/scodoc/sco_formsemestre_validation.py b/app/scodoc/sco_formsemestre_validation.py index f82b54cd..0050396a 100644 --- a/app/scodoc/sco_formsemestre_validation.py +++ b/app/scodoc/sco_formsemestre_validation.py @@ -1332,29 +1332,38 @@ def _get_etud_ue_validations_html(etud: Identite, formsemestre: FormSemestre) -> """HTML listant les validations d'UEs pour cet étudiant dans des formations de même code que celle du formsemestre indiqué. """ - validations: list[ScolarFormSemestreValidation] = ( + validations = get_etud_ue_validations(etud, formsemestre.formation) + if not validations: + return "" + return render_template( + "jury/ue_list_etud_validations.j2", + edit_mode=True, + etud=etud, + titre_boite="Validations d'UEs dans cette formation", + validations=validations, + ) + + +def get_etud_ue_validations( + etud: Identite, formation: Formation +) -> list[ScolarFormSemestreValidation]: + """Retourne les validations d'UEs pour cet étudiant dans des formations de même + code que celle indiquée. + """ + return ( ScolarFormSemestreValidation.query.filter_by(etudid=etud.id) .join(UniteEns) .join(Formation) - .filter_by(formation_code=formsemestre.formation.formation_code) + .filter_by(formation_code=formation.formation_code) .order_by( sa.desc(UniteEns.semestre_idx), + UniteEns.numero, UniteEns.acronyme, sa.desc(ScolarFormSemestreValidation.event_date), ) .all() ) - if not validations: - return "" - return render_template( - "jury/ue_list_etud_validations.j2", - edit_mode=True, - etud=etud, - titre_boite="Validations d'UEs dans cette formation", - validations=validations, - ) - def do_formsemestre_validate_previous_ue( formsemestre: FormSemestre, -- GitLab