Capacité d'accueil: vérif. édition semestre, messages.

This commit is contained in:
ilona 2024-08-12 14:40:35 +02:00
parent 5edd7a8ba3
commit 3971145abd
3 changed files with 23 additions and 9 deletions

View File

@ -1063,10 +1063,16 @@ class FormSemestre(models.ScoDocModel):
return inscr return inscr
if self.capacite_accueil is not None: if self.capacite_accueil is not None:
inscriptions = self.get_inscrits(etats={scu.INSCRIT, scu.DEMISSION}) # tous sauf démissionnaires:
inscriptions = self.get_inscrits(etats={scu.INSCRIT, scu.DEF})
if len(inscriptions) >= self.capacite_accueil: if len(inscriptions) >= self.capacite_accueil:
raise ScoValueError( raise ScoValueError(
f"Semestre {self.titre} complet: {len(self.inscriptions)} inscrits" f"Semestre {self.titre} complet : {len(self.inscriptions)} inscrits",
dest_url=url_for(
"notes.formsemestre_status",
scodoc_dept=g.scodoc_dept,
formsemestre_id=self.id,
),
) )
inscr = FormSemestreInscription( inscr = FormSemestreInscription(

View File

@ -370,7 +370,7 @@ def do_formsemestre_createwithmodules(edit=False, formsemestre: FormSemestre = N
{ {
"title": "Capacité d'accueil", "title": "Capacité d'accueil",
"size": 4, "size": 4,
"explanation": "laisser vide si pas de limite au nombre d'inscrits non démissionnaires", "explanation": "nombre max d'inscrits (hors démissionnaires). Laisser vide si pas de limite.",
"type": "int", "type": "int",
"allow_null": True, "allow_null": True,
}, },
@ -858,6 +858,14 @@ def do_formsemestre_createwithmodules(edit=False, formsemestre: FormSemestre = N
): ):
msg = '<ul class="tf-msg"><li class="tf-msg">Code étape Apogée manquant</li></ul>' msg = '<ul class="tf-msg"><li class="tf-msg">Code étape Apogée manquant</li></ul>'
# check capacité accueil si indiquée
if edit and isinstance(tf[2]["capacite_accueil"], int):
new_capacite_accueil = tf[2]["capacite_accueil"]
inscriptions = formsemestre.get_inscrits(etats={scu.INSCRIT, scu.DEF})
if len(inscriptions) > new_capacite_accueil:
msg = f"""<ul class="tf-msg"><li class="tf-msg">Capacité d'accueil insuffisante
(il y a {len(inscriptions)} inscrits non démissionaires)</li></ul>"""
if tf[0] == 0 or msg: if tf[0] == 0 or msg:
return f"""<p>Formation <a class="discretelink" href="{ return f"""<p>Formation <a class="discretelink" href="{
url_for("notes.ue_table", scodoc_dept=g.scodoc_dept, url_for("notes.ue_table", scodoc_dept=g.scodoc_dept,

View File

@ -439,7 +439,7 @@ def formsemestre_inscription_with_modules(
H.append("<ul>") H.append("<ul>")
for s in others: for s in others:
H.append( H.append(
f"""<li><a href="{ f"""<li><a class="stdlink" href="{
url_for("notes.formsemestre_desinscription", scodoc_dept=g.scodoc_dept, url_for("notes.formsemestre_desinscription", scodoc_dept=g.scodoc_dept,
formsemestre_id=s["formsemestre_id"], etudid=etudid ) formsemestre_id=s["formsemestre_id"], etudid=etudid )
}" class="stdlink">désinscrire de {s["titreannee"]} }" class="stdlink">désinscrire de {s["titreannee"]}
@ -447,13 +447,13 @@ def formsemestre_inscription_with_modules(
) )
H.append("</ul>") H.append("</ul>")
H.append( H.append(
f"""<p><a href="{ url_for( "notes.formsemestre_inscription_with_modules", f"""<p><a class="stdlink" href="{
scodoc_dept=g.scodoc_dept, etudid=etudid, formsemestre_id=formsemestre_id, url_for( "notes.formsemestre_inscription_with_modules",
multiple_ok=1, scodoc_dept=g.scodoc_dept, etudid=etudid, formsemestre_id=formsemestre_id,
group_ids=group_ids ) multiple_ok=1,
group_ids=group_ids )
}">Continuer quand même l'inscription</a> }">Continuer quand même l'inscription</a>
</p>""" </p>"""
# was sco_groups.make_query_groups(group_ids)
) )
return "\n".join(H) + footer return "\n".join(H) + footer
# #