1
0
forked from ScoDoc/ScoDoc

Fix: calcul des UEs de BUT1 non validées pour passage en BUT3

This commit is contained in:
Emmanuel Viennet 2023-06-30 14:23:05 +02:00
parent 77e4c4f726
commit b4c68cea10

View File

@ -367,7 +367,7 @@ class FormSemestreCursusBUT:
def etud_ues_de_but1_non_validees( def etud_ues_de_but1_non_validees(
etud: Identite, formation: Formation, parcour: ApcParcours etud: Identite, formation: Formation, parcour: ApcParcours
) -> list[UniteEns]: ) -> list[UniteEns]:
"""Vrai si cet étudiant a validé toutes ses UEs de S1 et S2, dans son parcours""" """Liste des UEs de S1 et S2 non validées, dans son parcours"""
# Les UEs avec décisions, dans les S1 ou S2 d'une formation de même code: # Les UEs avec décisions, dans les S1 ou S2 d'une formation de même code:
validations = ( validations = (
ScolarFormSemestreValidation.query.filter_by(etudid=etud.id) ScolarFormSemestreValidation.query.filter_by(etudid=etud.id)
@ -377,9 +377,9 @@ def etud_ues_de_but1_non_validees(
.join(Formation) .join(Formation)
.filter_by(formation_code=formation.formation_code) .filter_by(formation_code=formation.formation_code)
) )
codes_validations_by_ue = collections.defaultdict(list) codes_validations_by_ue_code = collections.defaultdict(list)
for v in validations: for v in validations:
codes_validations_by_ue[v.ue_id].append(v.code) codes_validations_by_ue_code[v.ue.ue_code].append(v.code)
# Les UEs du parcours en S1 et S2: # Les UEs du parcours en S1 et S2:
ues = formation.query_ues_parcour(parcour).filter( ues = formation.query_ues_parcour(parcour).filter(
@ -390,8 +390,11 @@ def etud_ues_de_but1_non_validees(
[ [
ue ue
for ue in ues for ue in ues
if any( if not any(
(not code_ue_validant(code) for code in codes_validations_by_ue[ue.id]) (
code_ue_validant(code)
for code in codes_validations_by_ue_code[ue.ue_code]
)
) )
], ],
key=attrgetter("numero", "acronyme"), key=attrgetter("numero", "acronyme"),