WIP: nouveaux RCUEs
This commit is contained in:
parent
0c9d202e09
commit
7ed521e4f5
@ -42,6 +42,8 @@ class RegroupementCoherentUE:
|
|||||||
res_pair, res_impair: résultats des formsemestre de l'année en cours, ou None
|
res_pair, res_impair: résultats des formsemestre de l'année en cours, ou None
|
||||||
cur_ues_pair, cur_ues_impair: ues auxquelles l'étudiant est inscrit cette année
|
cur_ues_pair, cur_ues_impair: ues auxquelles l'étudiant est inscrit cette année
|
||||||
"""
|
"""
|
||||||
|
self.semestre_id_impair = semestre_id_impair
|
||||||
|
self.semestre_id_pair = semestre_id_impair + 1
|
||||||
self.etud: Identite = etud
|
self.etud: Identite = etud
|
||||||
self.niveau: ApcNiveau = niveau
|
self.niveau: ApcNiveau = niveau
|
||||||
"Le niveau de compétences de ce RCUE"
|
"Le niveau de compétences de ce RCUE"
|
||||||
@ -59,7 +61,7 @@ class RegroupementCoherentUE:
|
|||||||
ScolarFormSemestreValidation.query.filter_by(
|
ScolarFormSemestreValidation.query.filter_by(
|
||||||
etudid=etud.id,
|
etudid=etud.id,
|
||||||
formsemestre_id=res_pair.formsemestre.id,
|
formsemestre_id=res_pair.formsemestre.id,
|
||||||
ue_id=self.ue_cur_pair,
|
ue_id=self.ue_cur_pair.id,
|
||||||
).first()
|
).first()
|
||||||
if self.ue_cur_pair
|
if self.ue_cur_pair
|
||||||
else None
|
else None
|
||||||
@ -68,27 +70,27 @@ class RegroupementCoherentUE:
|
|||||||
ScolarFormSemestreValidation.query.filter_by(
|
ScolarFormSemestreValidation.query.filter_by(
|
||||||
etudid=etud.id,
|
etudid=etud.id,
|
||||||
formsemestre_id=res_impair.formsemestre.id,
|
formsemestre_id=res_impair.formsemestre.id,
|
||||||
ue_id=self.ue_cur_impair,
|
ue_id=self.ue_cur_impair.id,
|
||||||
).first()
|
).first()
|
||||||
if self.ue_cur_impair
|
if self.ue_cur_impair
|
||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
|
|
||||||
# Autres validations pour l'UE paire
|
# Autres validations pour l'UE paire
|
||||||
self.validation_ue_best_pair = _best_autre_ue_validation(
|
self.validation_ue_best_pair = best_autre_ue_validation(
|
||||||
etud.id,
|
etud.id,
|
||||||
niveau.id,
|
niveau.id,
|
||||||
semestre_id_impair + 1,
|
semestre_id_impair + 1,
|
||||||
self.ue_cur_pair.id if self.ue_cur_pair else None,
|
res_pair.formsemestre.id if (res_pair and self.ue_cur_pair) else None,
|
||||||
)
|
)
|
||||||
self.validation_ue_best_impair = _best_autre_ue_validation(
|
self.validation_ue_best_impair = best_autre_ue_validation(
|
||||||
etud.id,
|
etud.id,
|
||||||
niveau.id,
|
niveau.id,
|
||||||
semestre_id_impair,
|
semestre_id_impair,
|
||||||
self.ue_cur_impair.id if self.ue_cur_impair else None,
|
res_impair.formsemestre.id if (res_impair and self.ue_cur_impair) else None,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Suis-je complet ?
|
# Suis-je complet ? (= en cours ou validé sur les deux moitiés)
|
||||||
self.complete = (self.ue_cur_pair or self.validation_ue_best_pair) and (
|
self.complete = (self.ue_cur_pair or self.validation_ue_best_pair) and (
|
||||||
self.ue_cur_impair or self.validation_ue_best_impair
|
self.ue_cur_impair or self.validation_ue_best_impair
|
||||||
)
|
)
|
||||||
@ -96,21 +98,31 @@ class RegroupementCoherentUE:
|
|||||||
self.moy_rcue = None
|
self.moy_rcue = None
|
||||||
|
|
||||||
# Stocke les moyennes d'UE
|
# Stocke les moyennes d'UE
|
||||||
|
self.res_impair = None
|
||||||
|
"résultats formsemestre de l'UE si elle est courante, None sinon"
|
||||||
|
self.ue_status_impair = None
|
||||||
if self.ue_cur_impair:
|
if self.ue_cur_impair:
|
||||||
ue_status = res_impair.get_etud_ue_status(etud.id, self.ue_cur_impair.id)
|
ue_status = res_impair.get_etud_ue_status(etud.id, self.ue_cur_impair.id)
|
||||||
self.moy_ue_1 = ue_status["moy"] if ue_status else None # avec capitalisée
|
self.moy_ue_1 = ue_status["moy"] if ue_status else None # avec capitalisée
|
||||||
self.ue_1 = self.ue_cur_impair
|
self.ue_1 = self.ue_cur_impair
|
||||||
|
self.res_impair = res_impair
|
||||||
|
self.ue_status_impair = ue_status
|
||||||
elif self.validation_ue_best_impair:
|
elif self.validation_ue_best_impair:
|
||||||
self.moy_ue_1 = self.validation_ue_best_pair.moy_ue
|
self.moy_ue_1 = self.validation_ue_best_impair.moy_ue
|
||||||
self.ue_1 = self.ue_cur_impair
|
self.ue_1 = self.validation_ue_best_impair.ue
|
||||||
else:
|
else:
|
||||||
self.moy_ue_1, self.ue_1 = None, None
|
self.moy_ue_1, self.ue_1 = None, None
|
||||||
self.moy_ue_1_val = self.moy_ue_1 if self.moy_ue_1 is not None else 0.0
|
self.moy_ue_1_val = self.moy_ue_1 if self.moy_ue_1 is not None else 0.0
|
||||||
|
|
||||||
|
self.res_pair = None
|
||||||
|
"résultats formsemestre de l'UE si elle est courante, None sinon"
|
||||||
|
self.ue_status_pair = None
|
||||||
if self.ue_cur_pair:
|
if self.ue_cur_pair:
|
||||||
ue_status = res_pair.get_etud_ue_status(etud.id, self.ue_cur_pair.id)
|
ue_status = res_pair.get_etud_ue_status(etud.id, self.ue_cur_pair.id)
|
||||||
self.moy_ue_2 = ue_status["moy"] if ue_status else None # avec capitalisée
|
self.moy_ue_2 = ue_status["moy"] if ue_status else None # avec capitalisée
|
||||||
self.ue_2 = self.ue_cur_pair
|
self.ue_2 = self.ue_cur_pair
|
||||||
|
self.res_pair = res_pair
|
||||||
|
self.ue_status_pair = ue_status
|
||||||
elif self.validation_ue_best_pair:
|
elif self.validation_ue_best_pair:
|
||||||
self.moy_ue_2 = self.validation_ue_best_pair.moy_ue
|
self.moy_ue_2 = self.validation_ue_best_pair.moy_ue
|
||||||
self.ue_2 = self.validation_ue_best_pair.ue
|
self.ue_2 = self.validation_ue_best_pair.ue
|
||||||
@ -142,15 +154,13 @@ class RegroupementCoherentUE:
|
|||||||
self,
|
self,
|
||||||
) -> Query: # list[ApcValidationRCUE]
|
) -> Query: # list[ApcValidationRCUE]
|
||||||
"""Les validations de jury enregistrées pour ce RCUE"""
|
"""Les validations de jury enregistrées pour ce RCUE"""
|
||||||
niveau = self.ue_2.niveau_competence
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
ApcValidationRCUE.query.filter_by(
|
ApcValidationRCUE.query.filter_by(
|
||||||
etudid=self.etud.id,
|
etudid=self.etud.id,
|
||||||
)
|
)
|
||||||
.join(UniteEns, UniteEns.id == ApcValidationRCUE.ue2_id)
|
.join(UniteEns, UniteEns.id == ApcValidationRCUE.ue2_id)
|
||||||
.join(ApcNiveau, UniteEns.niveau_competence_id == ApcNiveau.id)
|
.join(ApcNiveau, UniteEns.niveau_competence_id == ApcNiveau.id)
|
||||||
.filter(ApcNiveau.id == niveau.id)
|
.filter(ApcNiveau.id == self.niveau.id)
|
||||||
)
|
)
|
||||||
|
|
||||||
def other_ue(self, ue: UniteEns) -> UniteEns:
|
def other_ue(self, ue: UniteEns) -> UniteEns:
|
||||||
@ -205,21 +215,21 @@ class RegroupementCoherentUE:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def _best_autre_ue_validation(
|
def best_autre_ue_validation(
|
||||||
etudid: int, niveau_id: int, semestre_id: int, ue_id: int
|
etudid: int, niveau_id: int, semestre_id: int, formsemestre_id: int
|
||||||
) -> ScolarFormSemestreValidation:
|
) -> ScolarFormSemestreValidation:
|
||||||
"""La "meilleure" validation validante d'UE pour ce niveau/semestre"""
|
"""La "meilleure" validation validante d'UE pour ce niveau/semestre"""
|
||||||
validations = (
|
validations = (
|
||||||
ScolarFormSemestreValidation.query.filter_by(etudid=etudid)
|
ScolarFormSemestreValidation.query.filter_by(etudid=etudid)
|
||||||
.join(UniteEns)
|
.join(UniteEns)
|
||||||
.filter_by(semestre_idx=semestre_id + 1)
|
.filter_by(semestre_idx=semestre_id)
|
||||||
.join(ApcNiveau)
|
.join(ApcNiveau)
|
||||||
.filter(ApcNiveau.id == niveau_id)
|
.filter(ApcNiveau.id == niveau_id)
|
||||||
)
|
)
|
||||||
validations = [v for v in validations if codes_cursus.code_ue_validant(v.code)]
|
validations = [v for v in validations if codes_cursus.code_ue_validant(v.code)]
|
||||||
# Elimine l'UE en cours si elle existe
|
# Elimine l'UE en cours si elle existe
|
||||||
if ue_id is not None:
|
if formsemestre_id is not None:
|
||||||
validations = [v for v in validations if v.ue_id != ue_id]
|
validations = [v for v in validations if v.formsemestre_id != formsemestre_id]
|
||||||
validations = sorted(validations, key=lambda v: BUT_CODES_ORDER.get(v.code, 0))
|
validations = sorted(validations, key=lambda v: BUT_CODES_ORDER.get(v.code, 0))
|
||||||
return validations[-1] if validations else None
|
return validations[-1] if validations else None
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user