diff --git a/app/but/jury_but.py b/app/but/jury_but.py index 0d7ca77c..bb519b2c 100644 --- a/app/but/jury_but.py +++ b/app/but/jury_but.py @@ -304,7 +304,7 @@ class DecisionsProposeesAnnee(DecisionsProposees): self.admis = (self.nb_validables == self.nb_competences) and ( self.inscription_etat == scu.INSCRIT ) - "vrai si l'année est réussie, tous niveaux validables" + "vrai si l'année est réussie, tous niveaux validables ou validés par le jury" self.valide_moitie_rcue = self.nb_validables > (self.nb_competences // 2) # Peut passer si plus de la moitié validables et tous > 8 self.passage_de_droit = self.valide_moitie_rcue and (self.nb_rcues_under_8 == 0) diff --git a/app/scodoc/sco_formsemestre_inscriptions.py b/app/scodoc/sco_formsemestre_inscriptions.py index 3f32de8e..2c99c685 100644 --- a/app/scodoc/sco_formsemestre_inscriptions.py +++ b/app/scodoc/sco_formsemestre_inscriptions.py @@ -34,7 +34,7 @@ from flask import flash, url_for, g, request from app.comp import res_sem from app.comp.res_compat import NotesTableCompat -from app.models import FormSemestre +from app.models import FormSemestre, FormSemestreInscription from app.models.etudiants import Identite from app.models.groups import GroupDescr import app.scodoc.sco_utils as scu @@ -371,47 +371,44 @@ def formsemestre_inscription_with_modules( Formulaire avec choix groupe. """ log( - "formsemestre_inscription_with_modules: etudid=%s formsemestre_id=%s group_ids=%s" - % (etudid, formsemestre_id, group_ids) + f"""formsemestre_inscription_with_modules: etudid={etudid} formsemestre_id={ + formsemestre_id} group_ids={group_ids}""" ) if multiple_ok: multiple_ok = int(multiple_ok) - sem = sco_formsemestre.get_formsemestre(formsemestre_id) - etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0] + formsemestre: FormSemestre = FormSemestre.query.get_or_404(formsemestre_id) + etud: Identite = Identite.query.get_or_404(etudid) + if etud.dept_id != formsemestre.dept_id: + raise ScoValueError("l'étudiant n'est pas dans ce département") H = [ html_sco_header.html_sem_header( - "Inscription de %s dans ce semestre" % etud["nomprenom"], + f"Inscription de {etud.nomprenom} dans ce semestre", ) ] - F = html_sco_header.sco_footer() + footer = html_sco_header.sco_footer() # Check 1: déjà inscrit ici ? - ins = do_formsemestre_inscription_list({"etudid": etudid}) - already = False - for i in ins: - if i["formsemestre_id"] == formsemestre_id: - already = True - if already: + inscr = FormSemestreInscription.query.filter_by( + etudid=etud.id, formsemestre_id=formsemestre.id + ).first() + if inscr is not None: H.append( - '
%s est déjà inscrit dans le semestre %s
' - % (etud["nomprenom"], sem["titremois"]) - ) - H.append( - """""" - % ( - url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid), - etud["nomprenom"], - url_for( + f""" +{etud.nomprenom} est déjà inscrit + dans le semestre {formsemestre.titre_mois()} +
+Attention: %s est déjà inscrit sur la même période dans: %s.
' - % (etud["nomprenom"], ", ".join(l)) + f"""Attention: {etud.nomprenom} est déjà inscrit sur + la même période dans: {", ".join(l)}. +
""" ) H.append("Continuer quand même l'inscription
""" - % (etudid, formsemestre_id, sco_groups.make_query_groups(group_ids)) + f"""Continuer quand même l'inscription +
""" + # was sco_groups.make_query_groups(group_ids) ) - return "\n".join(H) + F + return "\n".join(H) + footer # if group_ids is not None: # OK, inscription @@ -455,11 +463,10 @@ def formsemestre_inscription_with_modules( else: # formulaire choix groupe H.append( - """ """ ) - return "\n".join(H) + F + return "\n".join(H) + footer def formsemestre_inscription_option(etudid, formsemestre_id): @@ -485,7 +492,7 @@ def formsemestre_inscription_option(etudid, formsemestre_id): formsemestre = FormSemestre.query.get_or_404(formsemestre_id) nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre) - F = html_sco_header.sco_footer() + footer = html_sco_header.sco_footer() H = [ html_sco_header.sco_header() + "Voici la liste des modules du semestre choisi.
- Les modules cochés sont ceux dans lesquels l'étudiant est inscrit. Vous pouvez l'inscrire ou le désincrire d'un ou plusieurs modules.
-Attention: cette méthode ne devrait être utilisée que pour les modules optionnels (ou les activités culturelles et sportives) et pour désinscrire les étudiants dispensés (UE validées).
+ """ +Voici la liste des modules du semestre choisi.
++ Les modules cochés sont ceux dans lesquels l'étudiant est inscrit. + Vous pouvez l'inscrire ou le désincrire d'un ou plusieurs modules. +
+Attention: cette méthode ne devrait être utilisée que pour les modules + optionnels (ou les activités culturelles et sportives) et pour désinscrire + les étudiants dispensés (UE validées). +
""" ) - return "\n".join(H) + "\n" + tf[1] + F + return "\n".join(H) + "\n" + tf[1] + footer elif tf[0] == -1: return flask.redirect( url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid) @@ -645,7 +659,7 @@ function chkbx_select(field_id, state) { """ % url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid) ) - return "\n".join(H) + F + return "\n".join(H) + footer H.append("