From 814a3802e96b45764949c942cfbd7a740490de9b Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Wed, 12 Jul 2023 22:11:33 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20association=20d'un=20formsemetre=20?= =?UTF-8?q?=C3=A0=20une=20nouvelle=20formation=20si=20des=20=C3=A9l=C3=A9m?= =?UTF-8?q?ents=20font=20r=C3=A9f=C3=A9rence=20=C3=A0=20des=20UEs=20qui=20?= =?UTF-8?q?ne=20sont=20plus=20dans=20la=20formation=20du=20semestre=20(sic?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_formation_versions.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/scodoc/sco_formation_versions.py b/app/scodoc/sco_formation_versions.py index 9cce0c3ae..e4a5937ef 100644 --- a/app/scodoc/sco_formation_versions.py +++ b/app/scodoc/sco_formation_versions.py @@ -200,7 +200,7 @@ def do_formsemestres_associate_new_version( # New formation: ( - formation_id, + new_formation_id, modules_old2new, ues_old2new, ) = sco_formations.formation_create_new_version(formation_id, redirect=False) @@ -219,7 +219,7 @@ def do_formsemestres_associate_new_version( # re-associate for formsemestre_id in formsemestre_ids: formsemestre = FormSemestre.get_formsemestre(formsemestre_id) - formsemestre.formation_id = formation_id + formsemestre.formation_id = new_formation_id db.session.add(formsemestre) _reassociate_moduleimpls(formsemestre, ues_old2new, modules_old2new) @@ -246,8 +246,12 @@ def _reassociate_moduleimpls( Evaluation.moduleimpl_id == ModuleImpl.id, ModuleImpl.formsemestre_id == formsemestre.id, ): - poids.ue_id = ues_old2new[poids.ue_id] - db.session.add(poids) + if poids.ue_id in ues_old2new: + poids.ue_id = ues_old2new[poids.ue_id] + db.session.add(poids) + else: + # poids vers une UE qui n'est pas ou plus dans notre formation + db.session.delete(poids) # update decisions: for event in ScolarEvent.query.filter_by(formsemestre_id=formsemestre.id): @@ -258,8 +262,9 @@ def _reassociate_moduleimpls( for validation in ScolarFormSemestreValidation.query.filter_by( formsemestre_id=formsemestre.id ): - if validation.ue_id is not None: + if (validation.ue_id is not None) and validation.ue_id in ues_old2new: validation.ue_id = ues_old2new[validation.ue_id] + # si l'UE n'est pas ou plus dans notre formation, laisse. db.session.add(validation) db.session.commit()