diff --git a/app/scodoc/sco_formsemestre_exterieurs.py b/app/scodoc/sco_formsemestre_exterieurs.py index 6ad279ff0..da71ee64b 100644 --- a/app/scodoc/sco_formsemestre_exterieurs.py +++ b/app/scodoc/sco_formsemestre_exterieurs.py @@ -56,34 +56,34 @@ from app.scodoc import sco_formsemestre_validation 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. sem_params: dict nécessaire à la création du formsemestre """ # Check args _ = Formation.query.get_or_404(sem_params["formation_id"]) - if etudid: - _ = Identite.get_etud(etudid) # Create formsemestre sem_params["modalite"] = "EXT" sem_params["etapes"] = None 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 # Inscription au semestre - sco_formsemestre_inscriptions.do_formsemestre_inscription_with_modules( - formsemestre_id, - etudid, - method="formsemestre_ext_create", - ) - return formsemestre_id + if etud: + sco_formsemestre_inscriptions.do_formsemestre_inscription_with_modules( + formsemestre.id, + etud.id, + method="formsemestre_ext_create", + ) + return formsemestre def formsemestre_ext_create_form(etudid, formsemestre_id): """Formulaire création/inscription à un semestre extérieur""" etud = Identite.get_etud(etudid) + formsemestre = FormSemestre.get_formsemestre(formsemestre_id) H = [ f"""

Enregistrement d'une inscription antérieure dans un autre établissement

@@ -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 étudiant, il est préférable d'utiliser la fonction " + scodoc_dept=g.scodoc_dept, etudid=etud.id, only_ext=1) }"> inscrire à un autre semestre"

Étudiant {etud.nomprenom}

""", ] - orig_sem = sco_formsemestre.get_formsemestre(formsemestre_id) # Ne propose que des semestres de semestre_id strictement inférieur # au semestre courant # et seulement si pas inscrit au même semestre_id d'un semestre ordinaire ScoDoc. # Les autres situations (eg redoublements en changeant d'établissement) # doivent être gérées par les validations de semestres "antérieurs" 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] existing_semestre_ids = {s["semestre_id"] for s in semlist} 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 H.append( f"""

L'étudiant est déjà inscrit dans des semestres ScoDoc de rangs: @@ -203,22 +202,22 @@ def formsemestre_ext_create_form(etudid, formsemestre_id):

""" ) return render_template("sco_page.j2", content="\n".join(H) + "\n" + tf[1]) - elif tf[0] == -1: + if tf[0] == -1: return flask.redirect( url_for( "notes.formsemestre_bulletinetud", scodoc_dept=g.scodoc_dept, 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 - tf[2]["formation_id"] = orig_sem["formation_id"] - formsemestre_ext_create(etudid, tf[2]) - return flask.redirect( - url_for("scolar.fiche_etud", scodoc_dept=g.scodoc_dept, etudid=etudid) - ) + + # Le semestre extérieur est créé dans la même formation que le semestre courant + tf[2]["formation_id"] = formsemestre.formation_id + formsemestre_ext_create(etud, tf[2]) + return flask.redirect( + url_for("scolar.fiche_etud", scodoc_dept=g.scodoc_dept, etudid=etud.id) + ) def formsemestre_ext_edit_ue_validations(formsemestre_id, etudid):