Ameliore gestion groupes de parcours
This commit is contained in:
parent
e59fce5f6b
commit
e995228ca7
@ -245,6 +245,15 @@ class FormSemestre(db.Model):
|
||||
d["etapes_apo_str"] = self.etapes_apo_str()
|
||||
return d
|
||||
|
||||
def get_parcours_apc(self) -> list[ApcParcours]:
|
||||
"""Liste des parcours proposés par ce semestre.
|
||||
Si aucun n'est coché et qu'il y a un référentiel, tous ceux du référentiel.
|
||||
"""
|
||||
return self.parcours or (
|
||||
self.formation.referentiel_competence
|
||||
and self.formation.referentiel_competence.parcours
|
||||
)
|
||||
|
||||
def query_ues(self, with_sport=False) -> flask_sqlalchemy.BaseQuery:
|
||||
"""UE des modules de ce semestre, triées par numéro.
|
||||
- Formations classiques: les UEs auxquelles appartiennent
|
||||
@ -670,8 +679,12 @@ class FormSemestre(db.Model):
|
||||
db.session.add(partition)
|
||||
db.session.flush() # pour avoir un id
|
||||
flash("Partition Parcours créée.")
|
||||
elif partition.groups_editable:
|
||||
# Il ne faut jamais laisser éditer cette partition de parcours
|
||||
partition.groups_editable = False
|
||||
db.session.add(partition)
|
||||
|
||||
for parcour in self.parcours:
|
||||
for parcour in self.get_parcours_apc():
|
||||
if parcour.code:
|
||||
group = GroupDescr.query.filter_by(
|
||||
partition_id=partition.id, group_name=parcour.code
|
||||
@ -680,21 +693,28 @@ class FormSemestre(db.Model):
|
||||
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.
|
||||
# - s'ils n'ont pas d'inscrits, supprime-les.
|
||||
# - s'ils ont des inscrits: avertissement
|
||||
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 is not None)
|
||||
and inscr.parcour.code == group.group_name
|
||||
]
|
||||
)
|
||||
== 0
|
||||
):
|
||||
flash(f"suppression du groupe de parcours {group.group_name}")
|
||||
db.session.delete(group)
|
||||
if group.group_name not in (p.code for p in self.parcours):
|
||||
if (
|
||||
len(
|
||||
[
|
||||
inscr
|
||||
for inscr in self.inscriptions
|
||||
if (inscr.parcour is not None)
|
||||
and inscr.parcour.code == group.group_name
|
||||
]
|
||||
)
|
||||
== 0
|
||||
):
|
||||
flash(f"Suppression du groupe de parcours vide {group.group_name}")
|
||||
db.session.delete(group)
|
||||
else:
|
||||
flash(
|
||||
f"""Attention: groupe de parcours {group.group_name} non vide:
|
||||
réaffectez ses étudiants dans des parcours du semestre"""
|
||||
)
|
||||
|
||||
db.session.commit()
|
||||
|
||||
|
@ -998,10 +998,7 @@ def formsemestre_status_head(formsemestre_id: int = None, page_title: str = None
|
||||
H.append("</td></tr>")
|
||||
if formation.is_apc():
|
||||
# Affiche les parcours BUT cochés. Si aucun, tous ceux du référentiel.
|
||||
sem_parcours = sem.parcours or (
|
||||
formation.referentiel_competence
|
||||
and formation.referentiel_competence.parcours
|
||||
)
|
||||
sem_parcours = sem.get_parcours_apc()
|
||||
H.append(
|
||||
f"""
|
||||
<tr><td class="fichetitre2">Parcours: </td>
|
||||
@ -1051,6 +1048,8 @@ def formsemestre_status(formsemestre_id=None):
|
||||
"formsemestre_bulletinetud: formsemestre_id must be an integer !"
|
||||
)
|
||||
formsemestre: FormSemestre = FormSemestre.query.get_or_404(formsemestre_id)
|
||||
# S'assure que les groupes de parcours sont à jour:
|
||||
formsemestre.setup_parcours_groups()
|
||||
modimpls = sco_moduleimpl.moduleimpl_withmodule_list(
|
||||
formsemestre_id=formsemestre_id
|
||||
)
|
||||
|
@ -902,6 +902,7 @@ sco_publish(
|
||||
@scodoc7func
|
||||
def partition_editor(formsemestre_id: int):
|
||||
formsemestre: FormSemestre = FormSemestre.query.get_or_404(formsemestre_id)
|
||||
formsemestre.setup_parcours_groups()
|
||||
H = [
|
||||
html_sco_header.sco_header(
|
||||
cssstyles=["css/partition_editor.css"],
|
||||
|
Loading…
Reference in New Issue
Block a user