Fix: enregistrement code jury BUT

This commit is contained in:
Emmanuel Viennet 2022-06-25 17:00:00 +02:00
parent 01d28eac90
commit 1d3ccb565a

View File

@ -480,7 +480,7 @@ class DecisionsProposeesAnnee(DecisionsProposees):
- 'code_annee' : 'ADM' code pour l'année
Si les code_rcue et le code_annee ne sont pas fournis,
enregistre ceux par défaut.
et qu'il n'y en a pas déjà, enregistre ceux par défaut.
"""
for key in form:
code = form[key]
@ -508,13 +508,15 @@ class DecisionsProposeesAnnee(DecisionsProposees):
self.record_all()
db.session.commit()
def record(self, code: str):
"""Enregistre le code"""
def record(self, code: str, no_overwrite=False):
"""Enregistre le code de l'année, et au besoin l'autorisation d'inscription.
Si no_overwrite, ne fait rien si un code est déjà enregistré.
"""
if code and not code in self.codes:
raise ScoValueError(
f"code annee <tt>{html.escape(code)}</tt> invalide pour formsemestre {html.escape(self.formsemestre)}"
)
if code == self.code_valide:
if code == self.code_valide or (self.code_valide is not None and no_overwrite):
self.recorded = True
return # no change
if self.validation:
@ -556,9 +558,7 @@ class DecisionsProposeesAnnee(DecisionsProposees):
self.recorded = True
def record_all(self):
"""Enregistre les codes qui n'ont pas été spécifiés par le formulaire,
et sont donc en mode "automatique"
"""
"""Enregistre les codes qui n'ont pas été spécifiés par le formulaire, et sont donc en mode "automatique" """
decisions = (
list(self.decisions_ues.values())
+ list(self.decisions_rcue_by_niveau.values())
@ -568,8 +568,8 @@ class DecisionsProposeesAnnee(DecisionsProposees):
if not dec.recorded:
# rappel: le code par défaut est en tête
code = dec.codes[0] if dec.codes else None
# s'il n'y a pas de codee, efface
dec.record(dec.codes[0])
# s'il n'y a pas de code, efface
dec.record(code, no_overwrite=True)
def erase(self):
"""Efface les décisions de jury de cet étudiant
@ -631,13 +631,13 @@ class DecisionsProposeesRCUE(DecisionsProposees):
else:
self.codes.insert(0, sco_codes.AJ)
def record(self, code: str):
def record(self, code: str, no_overwrite=False):
"""Enregistre le code"""
if code and not code in self.codes:
raise ScoValueError(
f"code UE invalide pour ue_id={self.ue.id}: {html.escape(code)}"
)
if code == self.code_valide:
if code == self.code_valide or (self.code_valide is not None and no_overwrite):
self.recorded = True
return # no change
parcours_id = self.parcour.id if self.parcour is not None else None
@ -747,13 +747,13 @@ class DecisionsProposeesUE(DecisionsProposees):
self.codes = [sco_codes.AJ, sco_codes.ADJ] + self.codes
self.explanation = "notes insuffisantes"
def record(self, code: str):
def record(self, code: str, no_overwrite=False):
"""Enregistre le code"""
if code and not code in self.codes:
raise ScoValueError(
f"code UE invalide pour ue_id={self.ue.id}: {html.escape(code)}"
)
if code == self.code_valide:
if code == self.code_valide or (self.code_valide is not None and no_overwrite):
self.recorded = True
return # no change
if self.validation: