forked from ScoDoc/ScoDoc
optimized etud search box
This commit is contained in:
parent
de42981231
commit
7622cd1a7e
@ -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">
|
||||||
|
115
sco_find_etud.py
115
sco_find_etud.py
@ -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 = "&".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&" % 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&" % e["etudid"] + query_string
|
target = dest_url + "?etudid=%s&" % 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()
|
||||||
|
Loading…
Reference in New Issue
Block a user