forked from ScoDoc/ScoDoc
Calcul auto jury BUT: enregistre autorisations
passage après semestre impair.
This commit is contained in:
parent
431b0aa651
commit
d83ad1aa21
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user