diff --git a/app/scodoc/sco_formation_versions.py b/app/scodoc/sco_formation_versions.py index 9cce0c3a..e4a5937e 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()