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]:
|
def next_semestre_ids(self, code: str) -> set[int]:
|
||||||
"""Les indices des semestres dans lequels l'étudiant est autorisé
|
"""Les indices des semestres dans lequels l'étudiant est autorisé
|
||||||
à poursuivre après le semestre courant.
|
à 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
|
# La poursuite d'études dans un semestre pair d'une même année
|
||||||
# est de droit pour tout étudiant.
|
# est de droit pour tout étudiant.
|
||||||
@ -722,7 +722,7 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
def record(self, code: str, mark_recorded: bool = True) -> bool:
|
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 l'étudiant est DEM ou DEF, ne fait rien.
|
||||||
Si le code est None, efface le code déjà enregistré.
|
Si le code est None, efface le code déjà enregistré.
|
||||||
Si mark_recorded est vrai, positionne self.recorded
|
Si mark_recorded est vrai, positionne self.recorded
|
||||||
@ -773,16 +773,17 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
self.invalidate_formsemestre_cache()
|
self.invalidate_formsemestre_cache()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def record_autorisation_inscription(self, code: str):
|
def record_autorisation_inscription(self, code: str) -> bool:
|
||||||
"""Autorisation d'inscription dans semestre suivant.
|
"""Autorisation d'inscription dans semestre suivant.
|
||||||
code: code jury sur année BUT
|
code: code jury sur année BUT
|
||||||
|
Return vrai si modif.
|
||||||
"""
|
"""
|
||||||
if self.autorisations_recorded:
|
if self.autorisations_recorded:
|
||||||
return
|
return False
|
||||||
if self.inscription_etat != scu.INSCRIT:
|
if self.inscription_etat != scu.INSCRIT:
|
||||||
# les dem et DEF ne continuent jamais
|
# les dem et DEF ne continuent jamais
|
||||||
return
|
return False # ? devrait effacer existant ?
|
||||||
ScolarAutorisationInscription.delete_autorisation_etud(
|
modif = ScolarAutorisationInscription.delete_autorisation_etud(
|
||||||
etudid=self.etud.id,
|
etudid=self.etud.id,
|
||||||
origin_formsemestre_id=self.formsemestre.id,
|
origin_formsemestre_id=self.formsemestre.id,
|
||||||
)
|
)
|
||||||
@ -793,7 +794,8 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
self.formsemestre.id,
|
self.formsemestre.id,
|
||||||
next_semestre_id,
|
next_semestre_id,
|
||||||
)
|
)
|
||||||
self.autorisations_recorded = True
|
modif = self.autorisations_recorded = True
|
||||||
|
return modif
|
||||||
|
|
||||||
def invalidate_formsemestre_cache(self):
|
def invalidate_formsemestre_cache(self):
|
||||||
"invalide le résultats des deux formsemestres"
|
"invalide le résultats des deux formsemestres"
|
||||||
@ -893,7 +895,10 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
not only_validantes
|
not only_validantes
|
||||||
) or code in sco_codes.CODES_ANNEE_BUT_VALIDES_DE_DROIT:
|
) or code in sco_codes.CODES_ANNEE_BUT_VALIDES_DE_DROIT:
|
||||||
modif |= self.record(code)
|
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
|
return modif
|
||||||
|
|
||||||
def erase(self, only_one_sem=False):
|
def erase(self, only_one_sem=False):
|
||||||
|
@ -229,13 +229,17 @@ class ScolarAutorisationInscription(models.ScoDocModel):
|
|||||||
cls,
|
cls,
|
||||||
etudid: int,
|
etudid: int,
|
||||||
origin_formsemestre_id: int,
|
origin_formsemestre_id: int,
|
||||||
):
|
) -> bool:
|
||||||
"""Efface les autorisations de cet étudiant venant du sem. origine"""
|
"""Efface les autorisations de cet étudiant venant du sem. origine.
|
||||||
|
Vrai si modification.
|
||||||
|
"""
|
||||||
autorisations = cls.query.filter_by(
|
autorisations = cls.query.filter_by(
|
||||||
etudid=etudid, origin_formsemestre_id=origin_formsemestre_id
|
etudid=etudid, origin_formsemestre_id=origin_formsemestre_id
|
||||||
)
|
)
|
||||||
|
modif = False
|
||||||
for autorisation in autorisations:
|
for autorisation in autorisations:
|
||||||
db.session.delete(autorisation)
|
db.session.delete(autorisation)
|
||||||
|
modif = True
|
||||||
log(f"ScolarAutorisationInscription: deleting {autorisation}")
|
log(f"ScolarAutorisationInscription: deleting {autorisation}")
|
||||||
Scolog.logdb(
|
Scolog.logdb(
|
||||||
"autorise_etud",
|
"autorise_etud",
|
||||||
@ -243,3 +247,4 @@ class ScolarAutorisationInscription(models.ScoDocModel):
|
|||||||
msg=f"Passage vers S{autorisation.semestre_id}: effacé",
|
msg=f"Passage vers S{autorisation.semestre_id}: effacé",
|
||||||
)
|
)
|
||||||
db.session.flush()
|
db.session.flush()
|
||||||
|
return modif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user