Fix: check suppression formation/ue

This commit is contained in:
Emmanuel Viennet 2022-06-08 17:42:52 +02:00
parent c890e21ed0
commit bde51dc639
3 changed files with 16 additions and 14 deletions

View File

@ -75,6 +75,15 @@ class UniteEns(db.Model):
return sco_edit_ue.ue_is_locked(self.id) return sco_edit_ue.ue_is_locked(self.id)
def can_be_deleted(self) -> bool:
"""True si l'UE n'est pas utilisée dans des formsemestre
et n'a pas de module rattachés
"""
# "pas un seul module de cette UE n'a de modimpl...""
return (self.modules.count() == 0) or not any(
m.modimpls.all() for m in self.modules
)
def guess_semestre_idx(self) -> None: def guess_semestre_idx(self) -> None:
"""Lorsqu'on prend une ancienne formation non APC, """Lorsqu'on prend une ancienne formation non APC,
les UE n'ont pas d'indication de semestre. les UE n'ont pas d'indication de semestre.

View File

@ -66,7 +66,8 @@ def formation_delete(formation_id=None, dialog_confirmed=False):
sems = sco_formsemestre.do_formsemestre_list({"formation_id": formation_id}) sems = sco_formsemestre.do_formsemestre_list({"formation_id": formation_id})
if sems: if sems:
H.append( H.append(
"""<p class="warning">Impossible de supprimer cette formation, car les sessions suivantes l'utilisent:</p> """<p class="warning">Impossible de supprimer cette formation,
car les sessions suivantes l'utilisent:</p>
<ul>""" <ul>"""
) )
for sem in sems: for sem in sems:

View File

@ -142,14 +142,6 @@ def do_ue_create(args):
return ue_id return ue_id
def can_delete_ue(ue: UniteEns) -> bool:
"""True si l'UE n'est pas utilisée dans des formsemestre
et n'a pas de module rattachés
"""
# "pas un seul module de cette UE n'a de modimpl...""
return (ue.modules.count() == 0) and not any(m.modimpls.all() for m in ue.modules)
def do_ue_delete(ue_id, delete_validations=False, force=False): def do_ue_delete(ue_id, delete_validations=False, force=False):
"delete UE and attached matieres (but not modules)" "delete UE and attached matieres (but not modules)"
from app.scodoc import sco_formations from app.scodoc import sco_formations
@ -158,9 +150,9 @@ def do_ue_delete(ue_id, delete_validations=False, force=False):
ue = UniteEns.query.get_or_404(ue_id) ue = UniteEns.query.get_or_404(ue_id)
formation_id = ue.formation_id formation_id = ue.formation_id
semestre_idx = ue.semestre_idx semestre_idx = ue.semestre_idx
if not can_delete_ue(ue): if not ue.can_be_deleted():
raise ScoNonEmptyFormationObject( raise ScoNonEmptyFormationObject(
"UE", f"UE (id={ue.id}, dud)",
msg=ue.titre, msg=ue.titre,
dest_url=url_for( dest_url=url_for(
"notes.ue_table", "notes.ue_table",
@ -540,9 +532,9 @@ def ue_delete(ue_id=None, delete_validations=False, dialog_confirmed=False):
semestre_idx=ue.semestre_idx, semestre_idx=ue.semestre_idx,
), ),
) )
if not can_delete_ue(ue): if not ue.can_be_deleted():
raise ScoNonEmptyFormationObject( raise ScoNonEmptyFormationObject(
"UE", f"UE",
msg=ue.titre, msg=ue.titre,
dest_url=url_for( dest_url=url_for(
"notes.ue_table", "notes.ue_table",