Calcul ECTS dans le parcours BUT

This commit is contained in:
Emmanuel Viennet 2023-07-01 08:21:40 +02:00
parent 87316f057e
commit ad4e4e33ec
2 changed files with 17 additions and 9 deletions

View File

@ -43,7 +43,7 @@ from app.models.formsemestre import FormSemestre, FormSemestreInscription
from app.models.ues import UniteEns from app.models.ues import UniteEns
from app.models.validations import ScolarFormSemestreValidation from app.models.validations import ScolarFormSemestreValidation
from app.scodoc import codes_cursus as sco_codes from app.scodoc import codes_cursus as sco_codes
from app.scodoc.codes_cursus import code_ue_validant, RED, UE_STANDARD from app.scodoc.codes_cursus import code_ue_validant, CODES_UE_VALIDES
from app.scodoc import sco_utils as scu from app.scodoc import sco_utils as scu
from app.scodoc.sco_exceptions import ScoNoReferentielCompetences, ScoValueError from app.scodoc.sco_exceptions import ScoNoReferentielCompetences, ScoValueError
@ -365,18 +365,26 @@ class FormSemestreCursusBUT:
def but_ects_valides(etud: Identite, referentiel_competence_id: int) -> float: def but_ects_valides(etud: Identite, referentiel_competence_id: int) -> float:
"Nombre d'ECTS validés par etud dans le BUT de référentiel indiqué" """Nombre d'ECTS validés par etud dans le BUT de référentiel indiqué.
# ne prend que les UE associées à des niveaux de compétences, et ne les compte qu'une fois Ne prend que les UE associées à des niveaux de compétences,
ects_dict = { et ne les compte qu'une fois même en cas de redoublement avec re-validation.
(v.ue.semestre_idx, v.ue.niveau_competence.id): v.ue.ects """
for v in ScolarFormSemestreValidation.query.filter_by(etudid=etud.id) validations = (
ScolarFormSemestreValidation.query.filter_by(etudid=etud.id)
.filter(ScolarFormSemestreValidation.ue_id != None) .filter(ScolarFormSemestreValidation.ue_id != None)
.join(UniteEns) .join(UniteEns)
.join(ApcNiveau) .join(ApcNiveau)
.join(ApcCompetence) .join(ApcCompetence)
.filter_by(referentiel_id=referentiel_competence_id) .filter_by(referentiel_id=referentiel_competence_id)
} )
return sum(ects_dict.values())
ects_dict = {}
for v in validations:
key = (v.ue.semestre_idx, v.ue.niveau_competence.id)
if v.code in CODES_UE_VALIDES:
ects_dict[key] = v.ue.ects
return sum(ects_dict.values()) if ects_dict else 0.0
def etud_ues_de_but1_non_validees( def etud_ues_de_but1_non_validees(

View File

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