forked from ScoDoc/ScoDoc
WIP: jury BUT: reprise UEs antérieures
This commit is contained in:
parent
d38f233c21
commit
eeaf449fb4
@ -1009,7 +1009,7 @@ class DecisionsProposeesRCUE(DecisionsProposees):
|
|||||||
sco_codes.DEM if inscription_etat == scu.DEMISSION else sco_codes.DEF
|
sco_codes.DEM if inscription_etat == scu.DEMISSION else sco_codes.DEF
|
||||||
]
|
]
|
||||||
return
|
return
|
||||||
self.validation = rcue.query_validations().first()
|
self.validation: ApcValidationRCUE = rcue.query_validations().first()
|
||||||
if self.validation is not None:
|
if self.validation is not None:
|
||||||
self.code_valide = self.validation.code
|
self.code_valide = self.validation.code
|
||||||
if rcue.est_compensable():
|
if rcue.est_compensable():
|
||||||
@ -1379,30 +1379,36 @@ class DecisionsProposeesUE(DecisionsProposees):
|
|||||||
inscription_etat: str = scu.INSCRIT,
|
inscription_etat: str = scu.INSCRIT,
|
||||||
):
|
):
|
||||||
self.paire = paire
|
self.paire = paire
|
||||||
|
self.formsemestre = formsemestre
|
||||||
|
"Le formsemestre courant auquel appartient l'UE, ou None si validation antérieure"
|
||||||
|
self.rcue: RegroupementCoherentUE = rcue
|
||||||
|
"Le rcue auquel est rattaché cette UE, ou None"
|
||||||
self.ue: UniteEns = rcue.ue_2 if paire else rcue.ue_1
|
self.ue: UniteEns = rcue.ue_2 if paire else rcue.ue_1
|
||||||
self.inscription_etat = inscription_etat
|
self.inscription_etat = inscription_etat
|
||||||
# Une UE peut être validée plusieurs fois en cas de redoublement
|
# Une UE peut être validée plusieurs fois en cas de redoublement
|
||||||
# (qu'elle soit capitalisée ou non)
|
# (qu'elle soit capitalisée ou non)
|
||||||
# mais ici on a restreint au formsemestre donc une seule (prend la première)
|
# mais ici on a restreint au formsemestre donc une seule (prend la première)
|
||||||
validation = ScolarFormSemestreValidation.query.filter_by(
|
|
||||||
etudid=etud.id, formsemestre_id=formsemestre.id, ue_id=self.ue.id << XXX
|
self.cur_validation = (
|
||||||
).first()
|
rcue.validation_ue_cur_pair if paire else rcue.validation_ue_cur_impair
|
||||||
|
)
|
||||||
|
"validation dans le formsemestre courant"
|
||||||
|
autre_validation = (
|
||||||
|
rcue.validation_ue_best_pair if paire else rcue.validation_ue_best_impair
|
||||||
|
)
|
||||||
|
"validation antérieure ou capitalisée"
|
||||||
|
# la validation à afficher est celle "en cours", sauf si UE antérieure
|
||||||
|
validation = self.cur_validation if self.formsemestre else autre_validation
|
||||||
super().__init__(
|
super().__init__(
|
||||||
etud=etud,
|
etud=etud,
|
||||||
code_valide=validation.code if validation is not None else None,
|
code_valide=validation.code if validation is not None else None,
|
||||||
)
|
)
|
||||||
self.validation = validation
|
self.validation = validation
|
||||||
"validation dans le formsemestre courant"
|
"validation dans le formsemestre courant ou à défaut celle enregistrée"
|
||||||
self.formsemestre = formsemestre
|
|
||||||
self.rcue: RegroupementCoherentUE = rcue
|
|
||||||
"Le rcue auquel est rattaché cette UE, ou None"
|
|
||||||
# Editable ou pas ?
|
# Editable ou pas ?
|
||||||
# si ue courante, éditable.
|
# si ue courante, éditable.
|
||||||
self.editable = (
|
self.editable = self.cur_validation is not None
|
||||||
(self.rcue.ue_cur_pair is not None)
|
|
||||||
if paire
|
|
||||||
else (self.rcue.ue_cur_impair is not None)
|
|
||||||
)
|
|
||||||
res: ResultatsSemestreBUT = (
|
res: ResultatsSemestreBUT = (
|
||||||
self.rcue.res_pair if paire else self.rcue.res_impair
|
self.rcue.res_pair if paire else self.rcue.res_impair
|
||||||
)
|
)
|
||||||
@ -1427,8 +1433,9 @@ class DecisionsProposeesUE(DecisionsProposees):
|
|||||||
|
|
||||||
# Moyenne de l'UE ?
|
# Moyenne de l'UE ?
|
||||||
ue_status = self.rcue.ue_status_pair if paire else self.rcue.ue_status_impair
|
ue_status = self.rcue.ue_status_pair if paire else self.rcue.ue_status_impair
|
||||||
self.moy_ue = ue_status["cur_moy_ue"]
|
if ue_status:
|
||||||
self.moy_ue_with_cap = ue_status["moy"]
|
self.moy_ue = ue_status["cur_moy_ue"]
|
||||||
|
self.moy_ue_with_cap = ue_status["moy"]
|
||||||
self.ue_status = ue_status
|
self.ue_status = ue_status
|
||||||
self.codes = [self.codes[0]] + sorted(self.codes[1:])
|
self.codes = [self.codes[0]] + sorted(self.codes[1:])
|
||||||
|
|
||||||
@ -1440,6 +1447,11 @@ class DecisionsProposeesUE(DecisionsProposees):
|
|||||||
"""Calcul des .codes attribuables et de l'explanation associée"""
|
"""Calcul des .codes attribuables et de l'explanation associée"""
|
||||||
if self.inscription_etat != scu.INSCRIT:
|
if self.inscription_etat != scu.INSCRIT:
|
||||||
return
|
return
|
||||||
|
# Si UE validée antérieure, on ne peut pas changer le code
|
||||||
|
if not self.formsemestre:
|
||||||
|
self.codes = [self.validation.code] if self.validation else []
|
||||||
|
self.explanation = "enregistrée"
|
||||||
|
return
|
||||||
if (
|
if (
|
||||||
self.moy_ue > (sco_codes.CursusBUT.BARRE_MOY - sco_codes.NOTES_TOLERANCE)
|
self.moy_ue > (sco_codes.CursusBUT.BARRE_MOY - sco_codes.NOTES_TOLERANCE)
|
||||||
) or self.formsemestre.modalite == "EXT":
|
) or self.formsemestre.modalite == "EXT":
|
||||||
@ -1499,6 +1511,8 @@ class DecisionsProposeesUE(DecisionsProposees):
|
|||||||
def erase(self):
|
def erase(self):
|
||||||
"""Efface la décision de jury de cet étudiant pour cette UE"""
|
"""Efface la décision de jury de cet étudiant pour cette UE"""
|
||||||
# par prudence, on requete toutes les validations, en cas de doublons
|
# par prudence, on requete toutes les validations, en cas de doublons
|
||||||
|
if not self.formsemestre:
|
||||||
|
return # antérieure, rien à effacer
|
||||||
validations = ScolarFormSemestreValidation.query.filter_by(
|
validations = ScolarFormSemestreValidation.query.filter_by(
|
||||||
etudid=self.etud.id, formsemestre_id=self.formsemestre.id, ue_id=self.ue.id
|
etudid=self.etud.id, formsemestre_id=self.formsemestre.id, ue_id=self.ue.id
|
||||||
)
|
)
|
||||||
|
@ -199,12 +199,40 @@ def _gen_but_niveau_ue(
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
"""
|
"""
|
||||||
|
elif dec_ue.formsemestre is None:
|
||||||
|
# Validation d'UE antérieure (semestre hors année scolaire courante)
|
||||||
|
if dec_ue.validation:
|
||||||
|
moy_ue_str = f"""<span>{scu.fmt_note(dec_ue.validation.moy_ue)}</span>"""
|
||||||
|
scoplement = f"""<div class="scoplement">
|
||||||
|
<div>
|
||||||
|
<b>UE {ue.acronyme} antérieure </b>
|
||||||
|
<span>validée {dec_ue.validation.code}
|
||||||
|
le {dec_ue.validation.event_date.strftime("%d/%m/%Y")}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div>Non reprise dans l'année en cours</div>
|
||||||
|
</div>
|
||||||
|
"""
|
||||||
|
else:
|
||||||
|
moy_ue_str = """<span>-</span>"""
|
||||||
|
scoplement = """<div class="scoplement">
|
||||||
|
<div>
|
||||||
|
<b>Pas d'UE en cours ou validée dans cette compétence de ce côté.</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
"""
|
||||||
else:
|
else:
|
||||||
moy_ue_str = f"""<span>{scu.fmt_note(dec_ue.moy_ue)}</span>"""
|
moy_ue_str = f"""<span>{scu.fmt_note(dec_ue.moy_ue)}</span>"""
|
||||||
if dec_ue.code_valide:
|
if dec_ue.code_valide:
|
||||||
scoplement = f"""<div class="scoplement">
|
date_str = (
|
||||||
<div>Code {dec_ue.code_valide} enregistré le {dec_ue.validation.event_date.strftime("%d/%m/%Y")}
|
f"""enregistré le {dec_ue.validation.event_date.strftime("%d/%m/%Y")}
|
||||||
à {dec_ue.validation.event_date.strftime("%Hh%M")}
|
à {dec_ue.validation.event_date.strftime("%Hh%M")}
|
||||||
|
"""
|
||||||
|
if dec_ue.validation and dec_ue.validation.event_date
|
||||||
|
else ""
|
||||||
|
)
|
||||||
|
scoplement = f"""<div class="scoplement">
|
||||||
|
<div>Code {dec_ue.code_valide} {date_str}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user