src/ldt/ldt/ldt_utils/searchutils.py
author ymh <ymh.work@gmail.com>
Wed, 07 Nov 2012 11:50:02 +0100
changeset 908 03a00e8f2e3b
parent 730 38993be55b2b
child 1093 03104d3f6ca1
permissions -rw-r--r--
Remove warnings
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
730
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     1
from ldt.indexation import SimpleSearch
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     2
from ldt.ldt_utils.models import Content, Project
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     3
from ldt.ldt_utils.utils import LdtUtils
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     4
from ldt.security.utils import set_forbidden_stream
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     5
import base64
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     6
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     7
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     8
def search_generate_ldt(request, field, query, query_encoded=True): 
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     9
    
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    10
    contentList = []
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    11
    queryStr = ""
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    12
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    13
    if query and len(query) > 0: 
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    14
        if query_encoded:
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    15
            queryStr = base64.urlsafe_b64decode(query.encode("ascii")).decode("utf8")
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    16
        else:
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    17
            queryStr = query
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    18
        searcher = SimpleSearch()
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    19
        ids = {}
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    20
        projIds = {}
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    21
        typesIds = {}
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    22
        results = searcher.query(field, queryStr)
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    23
        for result in results:
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    24
            ids[result["iri_id"]] = ""
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    25
            projIds[result["project_id"]] = ""
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    26
            typesIds[result["cutting_id"]] = ""
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    27
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    28
        id_list = ids.keys()
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    29
        projId_list = projIds.keys()
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    30
        typesId_list = typesIds.keys()
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    31
            
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    32
        contentList = Content.objects.filter(iri_id__in=id_list)        #@UndefinedVariable
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    33
        projectList = Project.safe_objects.filter(ldt_id__in=projId_list)    
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    34
          
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    35
    ldtgen = LdtUtils()
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    36
    #            generate_ldt(contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, projects=None):
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    37
    doc = ldtgen.generate_ldt(contentList, title=u"Recherche : " + queryStr, projects=projectList, types_id_list=typesId_list)
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    38
    doc = set_forbidden_stream(doc, request.user)
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    39
    
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    40
    return doc, results