diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py index 71b6d605..eabf7f09 100644 --- a/app/models/formsemestre.py +++ b/app/models/formsemestre.py @@ -597,6 +597,23 @@ class FormSemestre(db.Model): ).first() if not group: partition.groups.append(GroupDescr(group_name=parcour.code)) + db.session.flush() + # S'il reste des groupes de parcours qui ne sont plus dans le semestre + # et qui n'ont pas d'inscrits, supprime-les. + for group in GroupDescr.query.filter_by(partition_id=partition.id): + if (group.group_name not in (p.code for p in self.parcours)) and ( + len( + [ + inscr + for inscr in self.inscriptions + if inscr.parcour.code == group.group_name + ] + ) + == 0 + ): + flash(f"suppression du groupe de parcours {group.group_name}") + db.session.delete(group) + db.session.commit() def update_inscriptions_parcours_from_groups(self) -> None: diff --git a/app/scodoc/sco_formsemestre_edit.py b/app/scodoc/sco_formsemestre_edit.py index 80fdf3d7..bd396ad1 100644 --- a/app/scodoc/sco_formsemestre_edit.py +++ b/app/scodoc/sco_formsemestre_edit.py @@ -931,6 +931,8 @@ def do_formsemestre_createwithmodules(edit=False, formsemestre: FormSemestre = N db.session.commit() # --- Crée ou met à jour les groupes de parcours BUT formsemestre.setup_parcours_groups() + # peut être nécessaire dans certains cas: + formsemestre.update_inscriptions_parcours_from_groups() # --- Fin if edit: if msg: