src/ldt/ldt/ldt_utils/searchutils.py
author ymh <ymh.work@gmail.com>
Thu, 07 Feb 2013 13:41:49 +0100
changeset 1093 03104d3f6ca1
parent 908 03a00e8f2e3b
child 1275 38c396f3ced8
permissions -rw-r--r--
Requests optimisations
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
1093
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
     6
import logging
730
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     7
1093
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
     8
logger = logging.getLogger(__name__)
730
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
     9
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    10
def search_generate_ldt(request, field, query, query_encoded=True): 
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    11
    
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    12
    contentList = []
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    13
    queryStr = ""
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    14
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    15
    if query and len(query) > 0: 
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    16
        if query_encoded:
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    17
            queryStr = base64.urlsafe_b64decode(query.encode("ascii")).decode("utf8")
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    18
        else:
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    19
            queryStr = query
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    20
        searcher = SimpleSearch()
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    21
        ids = {}
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    22
        projIds = {}
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    23
        typesIds = {}
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    24
        results = searcher.query(field, queryStr)
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    25
        for result in results:
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    26
            ids[result["iri_id"]] = ""
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    27
            projIds[result["project_id"]] = ""
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    28
            typesIds[result["cutting_id"]] = ""
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    29
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    30
        id_list = ids.keys()
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    31
        projId_list = projIds.keys()
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    32
        typesId_list = typesIds.keys()
1093
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    33
        
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    34
        logger.debug("search_generate_ldt : getting content list")    
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    35
        contentList = Content.objects.filter(iri_id__in=id_list).select_related("front_project", "media_obj")        #@UndefinedVariable
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    36
        logger.debug("search_generate_ldt : getting project list")
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    37
        projectList = Project.safe_objects.filter(ldt_id__in=projId_list)
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    38
        
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    39
        
730
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    40
          
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    41
    ldtgen = LdtUtils()
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    42
    #            generate_ldt(contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, projects=None):
1093
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    43
    logger.debug("search_generate_ldt : generate ldt")
730
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    44
    doc = ldtgen.generate_ldt(contentList, title=u"Recherche : " + queryStr, projects=projectList, types_id_list=typesId_list)
1093
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    45
    
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    46
    logger.debug("search_generate_ldt : set forbidden streams")
730
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    47
    doc = set_forbidden_stream(doc, request.user)
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    48
    
1093
03104d3f6ca1 Requests optimisations
ymh <ymh.work@gmail.com>
parents: 908
diff changeset
    49
    logger.debug("search_generate_ldt : done")
730
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents:
diff changeset
    50
    return doc, results