# HG changeset patch # User cavaliet # Date 1343919881 -7200 # Node ID 38993be55b2b4a0ca655ec84625f413e2681fc67 # Parent 253446fed8e85e6d9b0330d5fa04a33d21ee5632 search_ldt factorization and correct template. diff -r 253446fed8e8 -r 38993be55b2b src/ldt/ldt/ldt_utils/searchutils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ldt/ldt/ldt_utils/searchutils.py Thu Aug 02 17:04:41 2012 +0200 @@ -0,0 +1,41 @@ +from django.conf import settings +from ldt.indexation import SimpleSearch +from ldt.ldt_utils.models import Content, Project +from ldt.ldt_utils.utils import LdtUtils +from ldt.security.utils import set_forbidden_stream +import base64 + + +def search_generate_ldt(request, field, query, query_encoded=True): + + contentList = [] + queryStr = "" + + if query and len(query) > 0: + if query_encoded: + queryStr = base64.urlsafe_b64decode(query.encode("ascii")).decode("utf8") + else: + queryStr = query + searcher = SimpleSearch() + ids = {} + projIds = {} + typesIds = {} + results = searcher.query(field, queryStr) + for result in results: + ids[result["iri_id"]] = "" + projIds[result["project_id"]] = "" + typesIds[result["cutting_id"]] = "" + + id_list = ids.keys() + projId_list = projIds.keys() + typesId_list = typesIds.keys() + + contentList = Content.objects.filter(iri_id__in=id_list) #@UndefinedVariable + projectList = Project.safe_objects.filter(ldt_id__in=projId_list) + + ldtgen = LdtUtils() + # generate_ldt(contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, projects=None): + doc = ldtgen.generate_ldt(contentList, title=u"Recherche : " + queryStr, projects=projectList, types_id_list=typesId_list) + doc = set_forbidden_stream(doc, request.user) + + return doc, results \ No newline at end of file diff -r 253446fed8e8 -r 38993be55b2b src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/publishedprojectslist.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/publishedprojectslist.html Thu Aug 02 15:39:32 2012 +0200 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/publishedprojectslist.html Thu Aug 02 17:04:41 2012 +0200 @@ -3,8 +3,10 @@ {% load front_tags %} {% if nb_pj_pages %} - {% load navigation %}{% build_pagination nb_pj_pages current_project_page "projects_page clickable" %} + {% endif %}
{% trans "name" %} diff -r 253446fed8e8 -r 38993be55b2b src/ldt/ldt/ldt_utils/views/json.py --- a/src/ldt/ldt/ldt_utils/views/json.py Thu Aug 02 15:39:32 2012 +0200 +++ b/src/ldt/ldt/ldt_utils/views/json.py Thu Aug 02 17:04:41 2012 +0200 @@ -8,7 +8,7 @@ from ldt.indexation import get_results_with_context from ldt.ldt_utils.models import Project from ldt.ldt_utils.projectserializer import ProjectSerializer -from ldt.ldt_utils.views.lignesdetemps import search_ldt +from ldt.ldt_utils.searchutils import search_generate_ldt from datetime import datetime import ldt.auth as ldt_auth import lxml.etree @@ -97,7 +97,7 @@ s = request.REQUEST.get("tag") if s: # We get the projects with all the segments - project_xml, results = search_ldt(request, "tags", s, None, True, False) + project_xml, results = search_generate_ldt(request, "tags", s, False) project = Project() project.ldt = lxml.etree.tostring(project_xml, pretty_print=True) # Needed datas for jsonification diff -r 253446fed8e8 -r 38993be55b2b src/ldt/ldt/ldt_utils/views/lignesdetemps.py --- a/src/ldt/ldt/ldt_utils/views/lignesdetemps.py Thu Aug 02 15:39:32 2012 +0200 +++ b/src/ldt/ldt/ldt_utils/views/lignesdetemps.py Thu Aug 02 17:04:41 2012 +0200 @@ -9,10 +9,11 @@ from ldt.indexation import SimpleSearch from ldt.security.utils import set_forbidden_stream from ldt.ldt_utils.stat import update_stat_project +from ldt.ldt_utils.searchutils import search_generate_ldt import base64 import django.core.urlresolvers import lxml.etree - + def search_index_get(request, field, query): @@ -31,44 +32,11 @@ resp.write(lxml.etree.tostring(doc, pretty_print=True, encoding="utf-8")) return resp + def search_ldt(request, field, query, edition=None, return_project=False, query_encoded=True): - contentList = [] resp = HttpResponse(mimetype="text/xml") - queryStr = "" - - if query and len(query) > 0: - if query_encoded: - queryStr = base64.urlsafe_b64decode(query.encode("ascii")).decode("utf8") - else: - queryStr = query - searcher = SimpleSearch() - ids = {} - projIds = {} - typesIds = {} - results = searcher.query(field, queryStr) - for result in results: - ids[result["iri_id"]] = "" - projIds[result["project_id"]] = "" - typesIds[result["cutting_id"]] = "" - - id_list = ids.keys() - projId_list = projIds.keys() - typesId_list = typesIds.keys() - - #if edition is not None: - # ids_editions = map(lambda t:t[0], filter(lambda id: id[0] is not None, Speak.objects.filter(session__day__edition=edition).order_by("session__start_ts", "order").values_list("content__iri_id"))) - # id_list = filter(lambda id: id in id_list, ids_editions) - - contentList = Content.objects.filter(iri_id__in=id_list) #@UndefinedVariable - projectList = Project.safe_objects.filter(ldt_id__in=projId_list) - - ldtgen = LdtUtils() - # generate_ldt(contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, projects=None): - doc = ldtgen.generate_ldt(contentList, title=u"Recherche : " + queryStr, projects=projectList, types_id_list=typesId_list) - doc = set_forbidden_stream(doc, request.user) - if return_project: - return doc, results + doc, _ = search_generate_ldt(request, field, query) doc.write(resp, pretty_print=True) return resp