forked from ScoDoc/ScoDoc
Création semestre extérieur: corrige et modernise.
This commit is contained in:
parent
bdf47d9240
commit
1f0a280dcf
@ -56,34 +56,34 @@ from app.scodoc import sco_formsemestre_validation
|
|||||||
from app.scodoc.codes_cursus import UE_SPORT
|
from app.scodoc.codes_cursus import UE_SPORT
|
||||||
|
|
||||||
|
|
||||||
def formsemestre_ext_create(etudid, sem_params):
|
def formsemestre_ext_create(etud: Identite | None, sem_params: dict) -> FormSemestre:
|
||||||
"""Crée un formsemestre exterieur et y inscrit l'étudiant.
|
"""Crée un formsemestre exterieur et y inscrit l'étudiant.
|
||||||
sem_params: dict nécessaire à la création du formsemestre
|
sem_params: dict nécessaire à la création du formsemestre
|
||||||
"""
|
"""
|
||||||
# Check args
|
# Check args
|
||||||
_ = Formation.query.get_or_404(sem_params["formation_id"])
|
_ = Formation.query.get_or_404(sem_params["formation_id"])
|
||||||
if etudid:
|
|
||||||
_ = Identite.get_etud(etudid)
|
|
||||||
|
|
||||||
# Create formsemestre
|
# Create formsemestre
|
||||||
sem_params["modalite"] = "EXT"
|
sem_params["modalite"] = "EXT"
|
||||||
sem_params["etapes"] = None
|
sem_params["etapes"] = None
|
||||||
sem_params["responsables"] = [current_user.id]
|
sem_params["responsables"] = [current_user.id]
|
||||||
formsemestre_id = sco_formsemestre.do_formsemestre_create(sem_params, silent=True)
|
formsemestre = FormSemestre.create_formsemestre(sem_params, silent=True)
|
||||||
# nota: le semestre est créé vide: pas de modules
|
# nota: le semestre est créé vide: pas de modules
|
||||||
|
|
||||||
# Inscription au semestre
|
# Inscription au semestre
|
||||||
|
if etud:
|
||||||
sco_formsemestre_inscriptions.do_formsemestre_inscription_with_modules(
|
sco_formsemestre_inscriptions.do_formsemestre_inscription_with_modules(
|
||||||
formsemestre_id,
|
formsemestre.id,
|
||||||
etudid,
|
etud.id,
|
||||||
method="formsemestre_ext_create",
|
method="formsemestre_ext_create",
|
||||||
)
|
)
|
||||||
return formsemestre_id
|
return formsemestre
|
||||||
|
|
||||||
|
|
||||||
def formsemestre_ext_create_form(etudid, formsemestre_id):
|
def formsemestre_ext_create_form(etudid, formsemestre_id):
|
||||||
"""Formulaire création/inscription à un semestre extérieur"""
|
"""Formulaire création/inscription à un semestre extérieur"""
|
||||||
etud = Identite.get_etud(etudid)
|
etud = Identite.get_etud(etudid)
|
||||||
|
formsemestre = FormSemestre.get_formsemestre(formsemestre_id)
|
||||||
H = [
|
H = [
|
||||||
f"""<h2>Enregistrement d'une inscription antérieure dans un autre
|
f"""<h2>Enregistrement d'une inscription antérieure dans un autre
|
||||||
établissement</h2>
|
établissement</h2>
|
||||||
@ -96,27 +96,26 @@ def formsemestre_ext_create_form(etudid, formsemestre_id):
|
|||||||
Notez que si un semestre extérieur similaire a déjà été créé pour un autre
|
Notez que si un semestre extérieur similaire a déjà été créé pour un autre
|
||||||
étudiant, il est préférable d'utiliser la fonction
|
étudiant, il est préférable d'utiliser la fonction
|
||||||
"<a href="{ url_for('notes.formsemestre_inscription_with_modules_form',
|
"<a href="{ url_for('notes.formsemestre_inscription_with_modules_form',
|
||||||
scodoc_dept=g.scodoc_dept, etudid=etudid, only_ext=1) }">
|
scodoc_dept=g.scodoc_dept, etudid=etud.id, only_ext=1) }">
|
||||||
inscrire à un autre semestre</a>"
|
inscrire à un autre semestre</a>"
|
||||||
</p>
|
</p>
|
||||||
<h3><a href="{ url_for('scolar.fiche_etud',
|
<h3><a href="{ url_for('scolar.fiche_etud',
|
||||||
scodoc_dept=g.scodoc_dept, etudid=etudid)
|
scodoc_dept=g.scodoc_dept, etudid=etud.id)
|
||||||
}" class="stdlink">Étudiant {etud.nomprenom}</a></h3>
|
}" class="stdlink">Étudiant {etud.nomprenom}</a></h3>
|
||||||
""",
|
""",
|
||||||
]
|
]
|
||||||
orig_sem = sco_formsemestre.get_formsemestre(formsemestre_id)
|
|
||||||
# Ne propose que des semestres de semestre_id strictement inférieur
|
# Ne propose que des semestres de semestre_id strictement inférieur
|
||||||
# au semestre courant
|
# au semestre courant
|
||||||
# et seulement si pas inscrit au même semestre_id d'un semestre ordinaire ScoDoc.
|
# et seulement si pas inscrit au même semestre_id d'un semestre ordinaire ScoDoc.
|
||||||
# Les autres situations (eg redoublements en changeant d'établissement)
|
# Les autres situations (eg redoublements en changeant d'établissement)
|
||||||
# doivent être gérées par les validations de semestres "antérieurs"
|
# doivent être gérées par les validations de semestres "antérieurs"
|
||||||
insem = sco_formsemestre_inscriptions.do_formsemestre_inscription_list(
|
insem = sco_formsemestre_inscriptions.do_formsemestre_inscription_list(
|
||||||
args={"etudid": etudid, "etat": scu.INSCRIT}
|
args={"etudid": etud.id, "etat": scu.INSCRIT}
|
||||||
)
|
)
|
||||||
semlist = [sco_formsemestre.get_formsemestre(i["formsemestre_id"]) for i in insem]
|
semlist = [sco_formsemestre.get_formsemestre(i["formsemestre_id"]) for i in insem]
|
||||||
existing_semestre_ids = {s["semestre_id"] for s in semlist}
|
existing_semestre_ids = {s["semestre_id"] for s in semlist}
|
||||||
min_semestre_id = 1
|
min_semestre_id = 1
|
||||||
max_semestre_id = orig_sem["semestre_id"]
|
max_semestre_id = formsemestre.semestre_id
|
||||||
semestre_ids = set(range(min_semestre_id, max_semestre_id)) - existing_semestre_ids
|
semestre_ids = set(range(min_semestre_id, max_semestre_id)) - existing_semestre_ids
|
||||||
H.append(
|
H.append(
|
||||||
f"""<p>L'étudiant est déjà inscrit dans des semestres ScoDoc de rangs:
|
f"""<p>L'étudiant est déjà inscrit dans des semestres ScoDoc de rangs:
|
||||||
@ -203,21 +202,21 @@ def formsemestre_ext_create_form(etudid, formsemestre_id):
|
|||||||
</p>"""
|
</p>"""
|
||||||
)
|
)
|
||||||
return render_template("sco_page.j2", content="\n".join(H) + "\n" + tf[1])
|
return render_template("sco_page.j2", content="\n".join(H) + "\n" + tf[1])
|
||||||
elif tf[0] == -1:
|
if tf[0] == -1:
|
||||||
return flask.redirect(
|
return flask.redirect(
|
||||||
url_for(
|
url_for(
|
||||||
"notes.formsemestre_bulletinetud",
|
"notes.formsemestre_bulletinetud",
|
||||||
scodoc_dept=g.scodoc_dept,
|
scodoc_dept=g.scodoc_dept,
|
||||||
formsemestre_id=formsemestre_id,
|
formsemestre_id=formsemestre_id,
|
||||||
etudid=etudid,
|
etudid=etud.id,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
# Le semestre extérieur est créé dans la même formation que le semestre courant
|
# Le semestre extérieur est créé dans la même formation que le semestre courant
|
||||||
tf[2]["formation_id"] = orig_sem["formation_id"]
|
tf[2]["formation_id"] = formsemestre.formation_id
|
||||||
formsemestre_ext_create(etudid, tf[2])
|
formsemestre_ext_create(etud, tf[2])
|
||||||
return flask.redirect(
|
return flask.redirect(
|
||||||
url_for("scolar.fiche_etud", scodoc_dept=g.scodoc_dept, etudid=etudid)
|
url_for("scolar.fiche_etud", scodoc_dept=g.scodoc_dept, etudid=etud.id)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user