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,
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)
),
)

View File

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