Jury BUT: invalidation cache semestre

This commit is contained in:
Emmanuel Viennet 2022-07-11 18:18:48 +02:00
parent 2bfbaa3a2a
commit a1f772b22e

View File

@ -89,6 +89,7 @@ from app.models.formations import Formation
from app.models.formsemestre import FormSemestre, FormSemestreInscription from app.models.formsemestre import FormSemestre, FormSemestreInscription
from app.models.ues import UniteEns from app.models.ues import UniteEns
from app.models.validations import ScolarFormSemestreValidation from app.models.validations import ScolarFormSemestreValidation
from app.scodoc import sco_cache
from app.scodoc import sco_codes_parcours as sco_codes from app.scodoc import sco_codes_parcours as sco_codes
from app.scodoc.sco_codes_parcours import RED, UE_STANDARD from app.scodoc.sco_codes_parcours import RED, UE_STANDARD
from app.scodoc import sco_utils as scu from app.scodoc import sco_utils as scu
@ -573,6 +574,8 @@ class DecisionsProposeesAnnee(DecisionsProposees):
Si les code_rcue et le code_annee ne sont pas fournis, Si les code_rcue et le code_annee ne sont pas fournis,
et qu'il n'y en a pas déjà, enregistre ceux par défaut. et qu'il n'y en a pas déjà, enregistre ceux par défaut.
""" """
log("jury_but.DecisionsProposeesAnnee.record_form")
with sco_cache.DeferredSemCacheManager():
for key in form: for key in form:
code = form[key] code = form[key]
# Codes d'UE # Codes d'UE
@ -647,6 +650,16 @@ class DecisionsProposeesAnnee(DecisionsProposees):
) )
self.recorded = True self.recorded = True
self.invalidate_formsemestre_cache()
def invalidate_formsemestre_cache(self):
"invalide le résultats des deux formsemestres"
if self.formsemestre_impair is not None:
sco_cache.invalidate_formsemestre(
formsemestre_id=self.formsemestre_impair.id
)
if self.formsemestre_pair is not None:
sco_cache.invalidate_formsemestre(formsemestre_id=self.formsemestre_pair.id)
def record_all(self): 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" """
@ -687,6 +700,7 @@ class DecisionsProposeesAnnee(DecisionsProposees):
for validation in validations: for validation in validations:
db.session.delete(validation) db.session.delete(validation)
db.session.flush() db.session.flush()
self.invalidate_formsemestre_cache()
def get_autorisations_passage(self) -> list[int]: def get_autorisations_passage(self) -> list[int]:
"""Les liste des indices de semestres auxquels on est autorisé à """Les liste des indices de semestres auxquels on est autorisé à
@ -805,6 +819,14 @@ class DecisionsProposeesRCUE(DecisionsProposees):
msg=f"Validation RCUE {repr(self.rcue)}", msg=f"Validation RCUE {repr(self.rcue)}",
) )
db.session.add(self.validation) db.session.add(self.validation)
if self.rcue.formsemestre_1 is not None:
sco_cache.invalidate_formsemestre(
formsemestre_id=self.rcue.formsemestre_1.id
)
if self.rcue.formsemestre_2 is not None:
sco_cache.invalidate_formsemestre(
formsemestre_id=self.rcue.formsemestre_2.id
)
self.recorded = True self.recorded = True
def erase(self): def erase(self):
@ -948,6 +970,8 @@ class DecisionsProposeesUE(DecisionsProposees):
msg=f"Validation UE {self.ue.id}", msg=f"Validation UE {self.ue.id}",
) )
db.session.add(self.validation) db.session.add(self.validation)
sco_cache.invalidate_formsemestre(formsemestre_id=self.formsemestre.id)
self.recorded = True self.recorded = True
def erase(self): def erase(self):