- Fix: invalidation cache après annulaition DEM ou DEF
- Améliore explication lorsqu'il est impossible de supprimer un semestre.
This commit is contained in:
parent
feb799cc20
commit
a8ab0cb48c
@ -1333,11 +1333,18 @@ Ceci n'est possible que si :
|
|||||||
cancelbutton="Annuler",
|
cancelbutton="Annuler",
|
||||||
)
|
)
|
||||||
if tf[0] == 0:
|
if tf[0] == 0:
|
||||||
if formsemestre_has_decisions_or_compensations(formsemestre):
|
has_decisions, message = formsemestre_has_decisions_or_compensations(
|
||||||
|
formsemestre
|
||||||
|
)
|
||||||
|
if has_decisions:
|
||||||
H.append(
|
H.append(
|
||||||
"""<p><b>Ce semestre ne peut pas être supprimé !
|
f"""<p><b>Ce semestre ne peut pas être supprimé !</b></p>
|
||||||
(il y a des décisions de jury ou des compensations par d'autres semestres)</b>
|
<p>il y a des décisions de jury ou des compensations par d'autres semestres:
|
||||||
</p>"""
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>{message}</li>
|
||||||
|
</ul>
|
||||||
|
"""
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
H.append(tf[1])
|
H.append(tf[1])
|
||||||
@ -1372,32 +1379,46 @@ def formsemestre_delete2(formsemestre_id, dialog_confirmed=False):
|
|||||||
return flask.redirect(scu.ScoURL())
|
return flask.redirect(scu.ScoURL())
|
||||||
|
|
||||||
|
|
||||||
def formsemestre_has_decisions_or_compensations(formsemestre: FormSemestre):
|
def formsemestre_has_decisions_or_compensations(
|
||||||
|
formsemestre: FormSemestre,
|
||||||
|
) -> tuple[bool, str]:
|
||||||
"""True if decision de jury (sem. UE, RCUE, année) émanant de ce semestre
|
"""True if decision de jury (sem. UE, RCUE, année) émanant de ce semestre
|
||||||
ou compensation de ce semestre par d'autres semestres
|
ou compensation de ce semestre par d'autres semestres
|
||||||
ou autorisations de passage.
|
ou autorisations de passage.
|
||||||
"""
|
"""
|
||||||
# Validations de semestre ou d'UEs
|
# Validations de semestre ou d'UEs
|
||||||
if ScolarFormSemestreValidation.query.filter_by(
|
nb_validations = ScolarFormSemestreValidation.query.filter_by(
|
||||||
formsemestre_id=formsemestre.id
|
formsemestre_id=formsemestre.id
|
||||||
).count():
|
).count()
|
||||||
return True
|
if nb_validations:
|
||||||
if ScolarFormSemestreValidation.query.filter_by(
|
return True, f"{nb_validations} validations de semestre ou d'UE"
|
||||||
|
nb_validations = ScolarFormSemestreValidation.query.filter_by(
|
||||||
compense_formsemestre_id=formsemestre.id
|
compense_formsemestre_id=formsemestre.id
|
||||||
).count():
|
).count()
|
||||||
return True
|
if nb_validations:
|
||||||
|
return True, f"{nb_validations} compensations utilisées dans d'autres semestres"
|
||||||
# Autorisations d'inscription:
|
# Autorisations d'inscription:
|
||||||
if ScolarAutorisationInscription.query.filter_by(
|
nb_validations = ScolarAutorisationInscription.query.filter_by(
|
||||||
origin_formsemestre_id=formsemestre.id
|
origin_formsemestre_id=formsemestre.id
|
||||||
).count():
|
).count()
|
||||||
return True
|
if nb_validations:
|
||||||
|
return (
|
||||||
|
True,
|
||||||
|
f"{nb_validations} autorisations d'inscriptions émanant de ce semestre",
|
||||||
|
)
|
||||||
# Validations d'années BUT
|
# Validations d'années BUT
|
||||||
if ApcValidationAnnee.query.filter_by(formsemestre_id=formsemestre.id).count():
|
nb_validations = ApcValidationAnnee.query.filter_by(
|
||||||
return True
|
formsemestre_id=formsemestre.id
|
||||||
|
).count()
|
||||||
|
if nb_validations:
|
||||||
|
return True, f"{nb_validations} validations d'année BUT utilisant ce semestre"
|
||||||
# Validations de RCUEs
|
# Validations de RCUEs
|
||||||
if ApcValidationRCUE.query.filter_by(formsemestre_id=formsemestre.id).count():
|
nb_validations = ApcValidationRCUE.query.filter_by(
|
||||||
return True
|
formsemestre_id=formsemestre.id
|
||||||
return False
|
).count()
|
||||||
|
if nb_validations:
|
||||||
|
return True, f"{nb_validations} validations de RCUE utilisant ce semestre"
|
||||||
|
return False, ""
|
||||||
|
|
||||||
|
|
||||||
def do_formsemestre_delete(formsemestre_id):
|
def do_formsemestre_delete(formsemestre_id):
|
||||||
|
@ -175,9 +175,7 @@ def do_formsemestre_demission(
|
|||||||
)
|
)
|
||||||
db.session.add(event)
|
db.session.add(event)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
sco_cache.invalidate_formsemestre(
|
sco_cache.invalidate_formsemestre(formsemestre_id=formsemestre_id)
|
||||||
formsemestre_id=formsemestre_id
|
|
||||||
) # > démission ou défaillance
|
|
||||||
if etat_new == scu.DEMISSION:
|
if etat_new == scu.DEMISSION:
|
||||||
flash("Démission enregistrée")
|
flash("Démission enregistrée")
|
||||||
elif etat_new == scu.DEF:
|
elif etat_new == scu.DEF:
|
||||||
|
@ -1306,6 +1306,8 @@ def _do_cancel_dem_or_def(
|
|||||||
db.session.delete(event)
|
db.session.delete(event)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
sco_cache.invalidate_formsemestre(formsemestre_id=formsemestre_id)
|
||||||
|
|
||||||
flash(f"{operation_name} annulée.")
|
flash(f"{operation_name} annulée.")
|
||||||
return flask.redirect(
|
return flask.redirect(
|
||||||
url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid)
|
url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid)
|
||||||
@ -1755,9 +1757,7 @@ def _etudident_create_or_edit_form(edit):
|
|||||||
# Inval semesters with this student:
|
# Inval semesters with this student:
|
||||||
to_inval = [s["formsemestre_id"] for s in etud["sems"]]
|
to_inval = [s["formsemestre_id"] for s in etud["sems"]]
|
||||||
for formsemestre_id in to_inval:
|
for formsemestre_id in to_inval:
|
||||||
sco_cache.invalidate_formsemestre(
|
sco_cache.invalidate_formsemestre(formsemestre_id=formsemestre_id)
|
||||||
formsemestre_id=formsemestre_id
|
|
||||||
) # > etudident_create_or_edit
|
|
||||||
#
|
#
|
||||||
return flask.redirect(
|
return flask.redirect(
|
||||||
url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid)
|
url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid)
|
||||||
@ -1833,7 +1833,7 @@ def etudident_delete(etudid, dialog_confirmed=False):
|
|||||||
# Inval semestres où il était inscrit:
|
# Inval semestres où il était inscrit:
|
||||||
to_inval = [s["formsemestre_id"] for s in etud["sems"]]
|
to_inval = [s["formsemestre_id"] for s in etud["sems"]]
|
||||||
for formsemestre_id in to_inval:
|
for formsemestre_id in to_inval:
|
||||||
sco_cache.invalidate_formsemestre(formsemestre_id=formsemestre_id) # >
|
sco_cache.invalidate_formsemestre(formsemestre_id=formsemestre_id)
|
||||||
flash("Étudiant supprimé !")
|
flash("Étudiant supprimé !")
|
||||||
return flask.redirect(scu.ScoURL())
|
return flask.redirect(scu.ScoURL())
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user