Skip to content
Snippets Groups Projects
Commit d83ad1aa authored by Emmanuel Viennet's avatar Emmanuel Viennet
Browse files

Calcul auto jury BUT: enregistre autorisations

passage après semestre impair.
parent 431b0aa6
No related branches found
No related tags found
No related merge requests found
......@@ -634,7 +634,7 @@ class DecisionsProposeesAnnee(DecisionsProposees):
def next_semestre_ids(self, code: str) -> set[int]:
"""Les indices des semestres dans lequels l'étudiant est autorisé
à poursuivre après le semestre courant.
code: code jury sur année BUT
code: code jury sur année BUT (inutilisé sur semestres impairs)
"""
# La poursuite d'études dans un semestre pair d'une même année
# est de droit pour tout étudiant.
......@@ -722,7 +722,7 @@ class DecisionsProposeesAnnee(DecisionsProposees):
db.session.commit()
def record(self, code: str, mark_recorded: bool = True) -> bool:
"""Enregistre le code de l'année, et au besoin l'autorisation d'inscription.
"""Enregistre le code de l'année, mais pas l'autorisation d'inscription.
Si l'étudiant est DEM ou DEF, ne fait rien.
Si le code est None, efface le code déjà enregistré.
Si mark_recorded est vrai, positionne self.recorded
......@@ -773,16 +773,17 @@ class DecisionsProposeesAnnee(DecisionsProposees):
self.invalidate_formsemestre_cache()
return True
def record_autorisation_inscription(self, code: str):
def record_autorisation_inscription(self, code: str) -> bool:
"""Autorisation d'inscription dans semestre suivant.
code: code jury sur année BUT
Return vrai si modif.
"""
if self.autorisations_recorded:
return
return False
if self.inscription_etat != scu.INSCRIT:
# les dem et DEF ne continuent jamais
return
ScolarAutorisationInscription.delete_autorisation_etud(
return False # ? devrait effacer existant ?
modif = ScolarAutorisationInscription.delete_autorisation_etud(
etudid=self.etud.id,
origin_formsemestre_id=self.formsemestre.id,
)
......@@ -793,7 +794,8 @@ class DecisionsProposeesAnnee(DecisionsProposees):
self.formsemestre.id,
next_semestre_id,
)
self.autorisations_recorded = True
modif = self.autorisations_recorded = True
return modif
def invalidate_formsemestre_cache(self):
"invalide le résultats des deux formsemestres"
......@@ -893,7 +895,10 @@ class DecisionsProposeesAnnee(DecisionsProposees):
not only_validantes
) or code in sco_codes.CODES_ANNEE_BUT_VALIDES_DE_DROIT:
modif |= self.record(code)
self.record_autorisation_inscription(code)
modif |= self.record_autorisation_inscription(code)
elif self.formsemestre.semestre_id % 2: # semestre impair: passage de droit
modif |= self.record_autorisation_inscription(code)
return modif
def erase(self, only_one_sem=False):
......
......@@ -229,13 +229,17 @@ class ScolarAutorisationInscription(models.ScoDocModel):
cls,
etudid: int,
origin_formsemestre_id: int,
):
"""Efface les autorisations de cet étudiant venant du sem. origine"""
) -> bool:
"""Efface les autorisations de cet étudiant venant du sem. origine.
Vrai si modification.
"""
autorisations = cls.query.filter_by(
etudid=etudid, origin_formsemestre_id=origin_formsemestre_id
)
modif = False
for autorisation in autorisations:
db.session.delete(autorisation)
modif = True
log(f"ScolarAutorisationInscription: deleting {autorisation}")
Scolog.logdb(
"autorise_etud",
......@@ -243,3 +247,4 @@ class ScolarAutorisationInscription(models.ScoDocModel):
msg=f"Passage vers S{autorisation.semestre_id}: effacé",
)
db.session.flush()
return modif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment