Améliore synchro groupes de parcours / parcours du formsemestre. Closes #508.

This commit is contained in:
Emmanuel Viennet 2022-11-01 19:25:15 +01:00 committed by iziram
parent a730bf759b
commit 20b13b05cf
2 changed files with 19 additions and 0 deletions

View File

@ -597,6 +597,23 @@ class FormSemestre(db.Model):
).first() ).first()
if not group: if not group:
partition.groups.append(GroupDescr(group_name=parcour.code)) 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() db.session.commit()
def update_inscriptions_parcours_from_groups(self) -> None: def update_inscriptions_parcours_from_groups(self) -> None:

View File

@ -931,6 +931,8 @@ def do_formsemestre_createwithmodules(edit=False, formsemestre: FormSemestre = N
db.session.commit() db.session.commit()
# --- Crée ou met à jour les groupes de parcours BUT # --- Crée ou met à jour les groupes de parcours BUT
formsemestre.setup_parcours_groups() formsemestre.setup_parcours_groups()
# peut être nécessaire dans certains cas:
formsemestre.update_inscriptions_parcours_from_groups()
# --- Fin # --- Fin
if edit: if edit:
if msg: if msg: