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