diff --git a/app/scodoc/sco_formsemestre_edit.py b/app/scodoc/sco_formsemestre_edit.py index 794e7bca1..230d8fada 100644 --- a/app/scodoc/sco_formsemestre_edit.py +++ b/app/scodoc/sco_formsemestre_edit.py @@ -919,7 +919,7 @@ def do_formsemestre_createwithmodules(edit=False): if ok: msg_html += "

Modification effectuée

" else: - msg_html += "

Modification effectuée (mais modules cités non supprimés)

" + msg_html += "

Modules non modifiés

" msg_html += ( 'retour au tableau de bord' % formsemestre_id @@ -987,33 +987,30 @@ def formsemestre_delete_moduleimpls(formsemestre_id, module_ids_to_del): ok = True msg = [] for module_id in module_ids_to_del: - # get id - moduleimpl_id = sco_moduleimpl.moduleimpl_list( + module = Module.query.get(module_id) + if module is None: + continue # ignore invalid ids + modimpls = ModuleImpl.query.filter_by( formsemestre_id=formsemestre_id, module_id=module_id - )[0]["moduleimpl_id"] - mod = sco_edit_module.module_list({"module_id": module_id})[0] - # Evaluations dans ce module ? - evals = sco_evaluation_db.do_evaluation_list({"moduleimpl_id": moduleimpl_id}) - if evals: - msg += [ - 'impossible de supprimer %s (%s) car il y a %d évaluations définies (supprimer les d\'abord)' - % ( - mod["code"] or "(module sans code)", - mod["titre"], - len(evals), - moduleimpl_id, - ) - ] - ok = False - else: - msg += [ - "suppression de %s (%s)" - % (mod["code"] or "(module sans code)", mod["titre"] or "") - ] - sco_moduleimpl.do_moduleimpl_delete( - moduleimpl_id, formsemestre_id=formsemestre_id - ) - + ) + for modimpl in modimpls: + nb_evals = modimpl.evaluations.count() + if nb_evals > 0: + msg += [ + f"""impossible de supprimer {module.code} ({module.titre or ""}) + car il y a {nb_evals} évaluations définies + (supprimez-les d\'abord)""" + ] + ok = False + else: + msg += [f"""suppression de {module.code} ({module.titre or ""})"""] + db.session.delete(modimpl) + if ok: + db.session.commit() + else: + db.session.rollback() return ok, msg