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()} +

+ + """ ) - return "\n".join(H) + F + return "\n".join(H) + footer # Check 2: déjà inscrit dans un semestre recouvrant les même dates ? # Informe et propose dé-inscriptions others = est_inscrit_ailleurs(etudid, formsemestre_id) @@ -419,26 +416,37 @@ def formsemestre_inscription_with_modules( l = [] for s in others: l.append( - '%(titremois)s' - % s + f"""{s['titremois']}""" ) H.append( - '

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("") 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( - """
- - + f""" + + """ - % (request.base_url, etudid, formsemestre_id) ) H.append(sco_groups.form_group_choice(formsemestre_id, allow_none=True)) @@ -472,7 +479,7 @@ def formsemestre_inscription_with_modules(
""" ) - 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() + "

Inscription de %s aux modules de %s (%s - %s)

" @@ -594,12 +601,19 @@ function chkbx_select(field_id, state) { ) if tf[0] == 0: H.append( - """

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("

Confirmer les modifications:

") if a_desinscrire: @@ -704,7 +718,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 def do_moduleimpl_incription_options(