|
730
|
1 |
from ldt.indexation import SimpleSearch |
|
|
2 |
from ldt.ldt_utils.models import Content, Project |
|
|
3 |
from ldt.ldt_utils.utils import LdtUtils |
|
|
4 |
from ldt.security.utils import set_forbidden_stream |
|
|
5 |
import base64 |
|
1093
|
6 |
import logging |
|
730
|
7 |
|
|
1093
|
8 |
logger = logging.getLogger(__name__) |
|
730
|
9 |
|
|
|
10 |
def search_generate_ldt(request, field, query, query_encoded=True): |
|
|
11 |
|
|
|
12 |
contentList = [] |
|
|
13 |
queryStr = "" |
|
|
14 |
|
|
|
15 |
if query and len(query) > 0: |
|
|
16 |
if query_encoded: |
|
|
17 |
queryStr = base64.urlsafe_b64decode(query.encode("ascii")).decode("utf8") |
|
|
18 |
else: |
|
|
19 |
queryStr = query |
|
|
20 |
searcher = SimpleSearch() |
|
|
21 |
ids = {} |
|
|
22 |
projIds = {} |
|
|
23 |
typesIds = {} |
|
|
24 |
results = searcher.query(field, queryStr) |
|
|
25 |
for result in results: |
|
|
26 |
ids[result["iri_id"]] = "" |
|
|
27 |
projIds[result["project_id"]] = "" |
|
|
28 |
typesIds[result["cutting_id"]] = "" |
|
|
29 |
|
|
|
30 |
id_list = ids.keys() |
|
|
31 |
projId_list = projIds.keys() |
|
|
32 |
typesId_list = typesIds.keys() |
|
1093
|
33 |
|
|
|
34 |
logger.debug("search_generate_ldt : getting content list") |
|
|
35 |
contentList = Content.objects.filter(iri_id__in=id_list).select_related("front_project", "media_obj") #@UndefinedVariable |
|
|
36 |
logger.debug("search_generate_ldt : getting project list") |
|
|
37 |
projectList = Project.safe_objects.filter(ldt_id__in=projId_list) |
|
|
38 |
|
|
|
39 |
|
|
730
|
40 |
|
|
|
41 |
ldtgen = LdtUtils() |
|
|
42 |
# generate_ldt(contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, projects=None): |
|
1093
|
43 |
logger.debug("search_generate_ldt : generate ldt") |
|
730
|
44 |
doc = ldtgen.generate_ldt(contentList, title=u"Recherche : " + queryStr, projects=projectList, types_id_list=typesId_list) |
|
1093
|
45 |
|
|
|
46 |
logger.debug("search_generate_ldt : set forbidden streams") |
|
730
|
47 |
doc = set_forbidden_stream(doc, request.user) |
|
|
48 |
|
|
1093
|
49 |
logger.debug("search_generate_ldt : done") |
|
730
|
50 |
return doc, results |