From 830e2f4b017544301f155458f00db0c186bfabef Mon Sep 17 00:00:00 2001
From: Emmanuel Viennet <emmanuel.viennet@gmail.com>
Date: Mon, 15 Jul 2024 13:08:02 +0200
Subject: [PATCH] =?UTF-8?q?Fix:=20listes=20validations=20UEs=20en=20BUT=20?=
=?UTF-8?q?avec=20UE=20externes=20(donc=20ECTS=20fiche=20=C3=A9tud)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/but/cursus_but.py | 21 ++++++++++++++-------
sco_version.py | 2 +-
2 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/app/but/cursus_but.py b/app/but/cursus_but.py
index 7b5b430b..f3c19925 100644
--- a/app/but/cursus_but.py
+++ b/app/but/cursus_but.py
@@ -408,7 +408,7 @@ def but_validations_ues(
etud: Identite,
referentiel_competence_id: int,
annees_but: None | Iterable[str] = None,
-) -> Query:
+) -> list[ScolarFormSemestreValidation]:
"""Query les validations d'UEs pour cet étudiant
dans des UEs appartenant à ce référentiel de compétence
et en option pour les années BUT indiquées.
@@ -417,18 +417,25 @@ def but_validations_ues(
validations = (
ScolarFormSemestreValidation.query.filter_by(etudid=etud.id)
.filter(ScolarFormSemestreValidation.ue_id != None)
- .join(FormSemestre, ScolarFormSemestreValidation.formsemestre)
.join(UniteEns)
.join(ApcNiveau)
)
# restreint à certaines années (utile pour les ECTS du DUT120)
if annees_but:
validations = validations.filter(ApcNiveau.annee.in_(annees_but))
- # restreint au référentiel de compétence et trie
- return (
- validations.join(ApcCompetence)
- .filter_by(referentiel_id=referentiel_competence_id)
- .order_by(FormSemestre.semestre_id, UniteEns.numero, UniteEns.acronyme)
+ # restreint au référentiel de compétence
+ validations = validations.join(ApcCompetence).filter_by(
+ referentiel_id=referentiel_competence_id
+ )
+
+ # Tri (nb: fait en python pour gérer les validations externes qui n'ont pas de formsemestre)
+ return sorted(
+ validations,
+ key=lambda v: (
+ (v.formsemestre.semestre_id, v.ue.numero, v.ue.acronyme)
+ if v.formsemestre
+ else (v.ue.semestre_idx or -2, v.ue.numero, v.ue.acronyme)
+ ),
)
diff --git a/sco_version.py b/sco_version.py
index 60714411..1f3a3321 100644
--- a/sco_version.py
+++ b/sco_version.py
@@ -1,7 +1,7 @@
# -*- mode: python -*-
# -*- coding: utf-8 -*-
-SCOVERSION = "9.7.0"
+SCOVERSION = "9.7.1"
SCONAME = "ScoDoc"
--
GitLab