optimized etud search box

This commit is contained in:
Emmanuel Viennet 2021-02-18 08:07:21 +01:00
parent de42981231
commit 7622cd1a7e
2 changed files with 39 additions and 78 deletions

View File

@ -88,7 +88,7 @@ def sidebar(context, REQUEST=None):
H.append( H.append(
"""<div class="box-chercheetud">Chercher étudiant:<br/> """<div class="box-chercheetud">Chercher étudiant:<br/>
<form id="form-chercheetud" action="%(ScoURL)s/search_etud_in_dept"> <form method="get" id="form-chercheetud" action="%(ScoURL)s/search_etud_in_dept">
<div><input type="text" size="12" id="in-expnom" name="expnom" spellcheck="false"></input></div> <div><input type="text" size="12" id="in-expnom" name="expnom" spellcheck="false"></input></div>
</form></div> </form></div>
<div class="etud-insidebar"> <div class="etud-insidebar">

View File

@ -96,73 +96,52 @@ def form_search_etud(
return "\n".join(H) return "\n".join(H)
# was chercheEtud() def search_etud_in_dept(context, expnom="", REQUEST=None):
def search_etud_in_dept( """Page recherche d'un etudiant.
context,
expnom=None, Affiche la fiche de l'étudiant, ou, si la recherche donne plusieurs résultats, la liste des étudianst
dest_url="ficheEtud", correspondants.
parameters={}, Appelée par boite de recherche barre latérale gauche.
parameters_keys="",
add_headers=True, # complete page Args:
title=None, expnom: string, regexp sur le nom ou un code_nip ou un etudid
REQUEST=None,
):
"""Page recherche d'un etudiant
expnom est un regexp sur le nom ou un code_nip ou un etudid
dest_url est la page sur laquelle on sera redirigé après choix
parameters spécifie des arguments additionnels à passer à l'URL (en plus de etudid)
""" """
if type(expnom) == ListType: dest_url = "ficheEtud"
expnom = expnom[0] if len(expnom) > 1:
q = []
if parameters:
for param in parameters.keys():
q.append("%s=%s" % (param, parameters[param]))
elif parameters_keys:
for key in parameters_keys.split(","):
v = REQUEST.form.get(key, False)
if v:
q.append("%s=%s" % (key, v))
query_string = "&amp;".join(q)
no_side_bar = True
H = []
if title:
H.append("<h2>%s</h2>" % title)
if scu.is_valid_code_nip(expnom):
etuds = search_etuds_infos(context, code_nip=expnom, REQUEST=REQUEST)
elif expnom:
etuds = search_etuds_infos(context, expnom=expnom, REQUEST=REQUEST)
if expnom and not etuds:
etuds = context.getEtudInfo(filled=1, etudid=expnom, REQUEST=REQUEST) etuds = context.getEtudInfo(filled=1, etudid=expnom, REQUEST=REQUEST)
if len(etuds) != 1: if len(etuds) != 1:
etuds = [] if scu.is_valid_code_nip(expnom):
etuds = search_etuds_infos(context, code_nip=expnom, REQUEST=REQUEST)
else:
etuds = search_etuds_infos(context, expnom=expnom, REQUEST=REQUEST)
else:
etuds = [] # si expnom est trop court, n'affiche rien
if len(etuds) == 1: if len(etuds) == 1:
# va directement a la destination # va directement a la destination
return REQUEST.RESPONSE.redirect( return context.ficheEtud(etudid=etuds[0]["etudid"], REQUEST=REQUEST)
dest_url + "?etudid=%s&amp;" % etuds[0]["etudid"] + query_string
)
H = [
context.sco_header(
page_title="Recherche d'un étudiant",
no_side_bar=True,
init_qtip=True,
javascripts=["js/etud_info.js"],
REQUEST=REQUEST,
),
"""<h2>%d résultats pour "%s": choisissez un étudiant:</h2>"""
% (len(etuds), expnom),
form_search_etud(
context,
dest_url=dest_url,
REQUEST=REQUEST,
title="Autre recherche",
),
]
if len(etuds) > 0: if len(etuds) > 0:
# Choix dans la liste des résultats: # Choix dans la liste des résultats:
H.append(
"""<h2>%d résultats pour "%s": choisissez un étudiant:</h2>"""
% (len(etuds), expnom)
)
H.append(
form_search_etud(
context,
dest_url=dest_url,
parameters=parameters,
parameters_keys=parameters_keys,
REQUEST=REQUEST,
title="Autre recherche",
)
)
for e in etuds: for e in etuds:
target = dest_url + "?etudid=%s&amp;" % e["etudid"] + query_string target = dest_url + "?etudid=%s&amp;" % e["etudid"]
e["_nomprenom_target"] = target e["_nomprenom_target"] = target
e["inscription_target"] = target e["inscription_target"] = target
e["_nomprenom_td_attrs"] = 'id="%s" class="etudinfo"' % (e["etudid"]) e["_nomprenom_td_attrs"] = 'id="%s" class="etudinfo"' % (e["etudid"])
@ -187,34 +166,16 @@ def search_etud_in_dept(
form_search_etud( form_search_etud(
context, context,
dest_url=dest_url, dest_url=dest_url,
parameters=parameters,
parameters_keys=parameters_keys,
REQUEST=REQUEST, REQUEST=REQUEST,
title="Autre recherche", title="Autre recherche",
) )
) )
else: else:
H.append('<h2 style="color: red;">Aucun résultat pour "%s".</h2>' % expnom) H.append('<h2 style="color: red;">Aucun résultat pour "%s".</h2>' % expnom)
add_headers = True
no_side_bar = False
H.append( 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</p>"""
) )
if add_headers: return "\n".join(H) + context.sco_footer(REQUEST)
return (
context.sco_header(
REQUEST,
page_title="Choix d'un étudiant",
init_qtip=True,
javascripts=["js/etud_info.js"],
no_side_bar=no_side_bar,
)
+ "\n".join(H)
+ context.sco_footer(REQUEST)
)
else:
return "\n".join(H)
# Was chercheEtudsInfo() # Was chercheEtudsInfo()