Fix: listes validations UEs en BUT avec UE externes (donc ECTS fiche étud)

This commit is contained in:
Emmanuel Viennet 2024-07-15 13:08:02 +02:00
parent 9b825c0fb1
commit 830e2f4b01
2 changed files with 15 additions and 8 deletions

View File

@ -408,7 +408,7 @@ def but_validations_ues(
etud: Identite, etud: Identite,
referentiel_competence_id: int, referentiel_competence_id: int,
annees_but: None | Iterable[str] = None, annees_but: None | Iterable[str] = None,
) -> Query: ) -> list[ScolarFormSemestreValidation]:
"""Query les validations d'UEs pour cet étudiant """Query les validations d'UEs pour cet étudiant
dans des UEs appartenant à ce référentiel de compétence dans des UEs appartenant à ce référentiel de compétence
et en option pour les années BUT indiquées. et en option pour les années BUT indiquées.
@ -417,18 +417,25 @@ def but_validations_ues(
validations = ( validations = (
ScolarFormSemestreValidation.query.filter_by(etudid=etud.id) ScolarFormSemestreValidation.query.filter_by(etudid=etud.id)
.filter(ScolarFormSemestreValidation.ue_id != None) .filter(ScolarFormSemestreValidation.ue_id != None)
.join(FormSemestre, ScolarFormSemestreValidation.formsemestre)
.join(UniteEns) .join(UniteEns)
.join(ApcNiveau) .join(ApcNiveau)
) )
# restreint à certaines années (utile pour les ECTS du DUT120) # restreint à certaines années (utile pour les ECTS du DUT120)
if annees_but: if annees_but:
validations = validations.filter(ApcNiveau.annee.in_(annees_but)) validations = validations.filter(ApcNiveau.annee.in_(annees_but))
# restreint au référentiel de compétence et trie # restreint au référentiel de compétence
return ( validations = validations.join(ApcCompetence).filter_by(
validations.join(ApcCompetence) referentiel_id=referentiel_competence_id
.filter_by(referentiel_id=referentiel_competence_id) )
.order_by(FormSemestre.semestre_id, UniteEns.numero, UniteEns.acronyme)
# 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)
),
) )

View File

@ -1,7 +1,7 @@
# -*- mode: python -*- # -*- mode: python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
SCOVERSION = "9.7.0" SCOVERSION = "9.7.1"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"