Fix choix étudiant

This commit is contained in:
Emmanuel Viennet 2021-08-22 14:23:58 +02:00
parent d8dfa0201e
commit fcc28839c0
2 changed files with 51 additions and 29 deletions

View File

@ -75,13 +75,13 @@ def form_search_etud(
% (",".join(parameters.keys()))
)
elif parameters_keys:
if request.method == "POST":
vals = request.form
elif request.method == "GET":
vals = request.args
else:
vals = {}
for key in parameters_keys.split(","):
if request.method == "POST":
vals = request.form
elif request.method == "GET":
vals = request.args
else:
vals = {}
v = vals.get(key, False)
if v:
H.append('<input type="hidden" name="%s" value="%s"/>' % (key, v))
@ -100,17 +100,18 @@ def form_search_etud(
return "\n".join(H)
def search_etud_in_dept(expnom="", REQUEST=None):
def search_etud_in_dept(expnom=""):
"""Page recherche d'un etudiant.
Affiche la fiche de l'étudiant, ou, si la recherche donne plusieurs résultats,
la liste des étudiants correspondants.
Appelée par boite de recherche barre latérale gauche.
Appelée par:
- boite de recherche barre latérale gauche.
- choix d'un étudiant à inscrire (en POST avec dest_url et parameters_keys)
Args:
expnom: string, regexp sur le nom ou un code_nip ou un etudid
"""
breakpoint()
if isinstance(expnom, int) or len(expnom) > 1:
try:
etudid = int(expnom)
@ -126,13 +127,26 @@ def search_etud_in_dept(expnom="", REQUEST=None):
else:
etuds = [] # si expnom est trop court, n'affiche rien
if request.method == "POST":
vals = request.form
elif request.method == "GET":
vals = request.args
else:
vals = {}
url_args = {"scodoc_dept": g.scodoc_dept}
if "dest_url" in request.form:
endpoint = request.form["dest_url"]
else:
endpoint = "scolar.ficheEtud"
if "parameters_keys" in request.form:
for key in vals["parameters_keys"].split(","):
url_args[key] = vals[key]
if len(etuds) == 1:
# va directement a la fiche
return flask.redirect(
url_for(
"scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etuds[0]["etudid"]
)
)
url_args["etudid"] = etuds[0]["etudid"]
return flask.redirect(url_for(endpoint, **url_args))
H = [
html_sco_header.sco_header(
@ -140,22 +154,27 @@ def search_etud_in_dept(expnom="", REQUEST=None):
no_side_bar=True,
init_qtip=True,
javascripts=["js/etud_info.js"],
),
"""<h2>%d résultats pour "%s": choisissez un étudiant:</h2>"""
% (len(etuds), expnom),
form_search_etud(
dest_url=url_for(
"scolar.ficheEtud", scodoc_dept=g.scodoc_dept
), # sans l'etudid, post du form
title="Autre recherche",
),
)
]
if len(etuds) == 0 and len(etuds) <= 1:
H.append("""<h2>chercher un étudiant:</h2>""")
else:
H.append(
f"""<h2>{len(etuds)} résultats pour "<tt>{expnom}</tt>": choisissez un étudiant:</h2>"""
)
H.append(
form_search_etud(
dest_url=endpoint,
parameters=vals.get("parameters"),
parameters_keys=vals.get("parameters_keys"),
title="Autre recherche",
)
)
if len(etuds) > 0:
# Choix dans la liste des résultats:
for e in etuds:
target = url_for(
"scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=e["etudid"]
)
url_args["etudid"] = e["etudid"]
target = url_for(endpoint, **url_args)
e["_nomprenom_target"] = target
e["inscription_target"] = target
e["_nomprenom_td_attrs"] = 'id="%s" class="etudinfo"' % (e["etudid"])
@ -178,14 +197,16 @@ def search_etud_in_dept(expnom="", REQUEST=None):
if len(etuds) > 20: # si la page est grande
H.append(
form_search_etud(
dest_url=url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept),
dest_url=endpoint,
parameters=vals.get("parameters"),
parameters_keys=vals.get("parameters_keys"),
title="Autre recherche",
)
)
else:
H.append('<h2 style="color: red;">Aucun résultat pour "%s".</h2>' % expnom)
H.append(
"""<p class="help">La recherche porte sur tout ou partie du NOM ou du NIP de l'étudiant</p>"""
"""<p class="help">La recherche porte sur tout ou partie du NOM ou du NIP de l'étudiant. Saisir au moins deux caractères.</p>"""
)
return "\n".join(H) + html_sco_header.sco_footer()

View File

@ -255,8 +255,9 @@ def formsemestre_inscription_with_modules_etud(
return sco_find_etud.form_search_etud(
title="Choix de l'étudiant à inscrire dans ce semestre",
add_headers=True,
dest_url="formsemestre_inscription_with_modules_etud",
dest_url="notes.formsemestre_inscription_with_modules_etud",
parameters={"formsemestre_id": formsemestre_id},
parameters_keys="formsemestre_id",
)
return formsemestre_inscription_with_modules(