src/ldt/ldt/ldt_utils/views/workspace.py
changeset 567 715f117b0415
parent 563 9beab46d99d3
child 570 361ecea621e0
equal deleted inserted replaced
566:ef63e64297f9 567:715f117b0415
   177             
   177             
   178             return render_to_response('ldt/ldt_utils/search_results.html', {'results': results, 'nb_results' : nb, 'search' : search, 'field': field, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request))
   178             return render_to_response('ldt/ldt_utils/search_results.html', {'results': results, 'nb_results' : nb, 'search' : search, 'field': field, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request))
   179         
   179         
   180     else:
   180     else:
   181         return HttpResponseRedirect(reverse('ldt.ldt_utils.views.workspace.published_project'))
   181         return HttpResponseRedirect(reverse('ldt.ldt_utils.views.workspace.published_project'))
   182 
       
   183         
       
   184 def get_search_results(request, search, field, page):
   182 def get_search_results(request, search, field, page):
   185     results = get_results_with_context(field, search) 
   183     results = get_results_with_context(field, search) 
   186             
   184             
   187     all_segments = Segment.objects.filter(element_id__in=[e['element_id'] for e in results])
   185     all_segments = Segment.objects.filter(element_id__in=[e['element_id'] for e in results])
   188     all_projects = Project.objects.filter(ldt_id__in=[e['project_id'] for e in results], state=2)
   186     all_projects = Project.objects.filter(ldt_id__in=[e['project_id'] for e in results], state=2)
   195     for iri_id, item in groupby(results, itemgetter('iri_id')):
   193     for iri_id, item in groupby(results, itemgetter('iri_id')):
   196         content = filter(lambda e: e.iri_id == iri_id, all_contents)[0]
   194         content = filter(lambda e: e.iri_id == iri_id, all_contents)[0]
   197         if content.description is None:
   195         if content.description is None:
   198             content.description = ''
   196             content.description = ''
   199                     
   197                     
   200             all_related_segments = list(item)
   198         all_related_segments = list(item)
   201                 
   199                 
   202             valid_segments = []
   200         valid_segments = []
   203             for s in all_related_segments:
   201         for s in all_related_segments:
   204                 segment = [seg for seg in all_segments if seg.element_id == s['element_id'] and seg.project_id == s['project_id'] and seg.iri_id == s['iri_id'] and seg.cutting_id == s['decoupage_id'] and seg.ensemble_id == s['ensemble_id'] ][0]
   202             segment = [seg for seg in all_segments if seg.element_id == s['element_id'] and seg.project_id == s['project_id'] and seg.iri_id == s['iri_id'] and seg.cutting_id == s['decoupage_id'] and seg.ensemble_id == s['ensemble_id'] ][0]
   205                     
       
   206                 segment.score = s['score']
       
   207                 segment.lucene_id = s['lucene_id']
       
   208                 segment.context = s['context']
       
   209                 segment.context_tags = s['tags']
       
   210                                         
       
   211                 if not s['project_id']:
       
   212                     segment.project_id = '_'
       
   213                     valid_segments.append(segment)
       
   214                 elif s['project_id'] in viewable_projects_id:
       
   215                     valid_segments.append(segment)
       
   216                 
   203                 
   217             # If all segments found belong to unpublished projects or projects
   204             segment.score = s['score']
   218             # the current user is not allowed to see
   205             segment.lucene_id = s['lucene_id']
   219             if not valid_segments:
   206             segment.context = s['context']
   220                 continue
   207             segment.context_tags = s['tags']
   221                 
   208                                     
   222             score = sum([seg.score for seg in valid_segments])
   209             if not s['project_id']:
   223             complete_results.append({
   210                 segment.project_id = '_'
   224                                      'list': valid_segments,
   211                 valid_segments.append(segment)
   225                                      'score': score,
   212             elif s['project_id'] in viewable_projects_id:
   226                                      'content': content,                                         
   213                 valid_segments.append(segment)
   227                                      })                
   214             
       
   215         # If all segments found belong to unpublished projects or projects
       
   216         # the current user is not allowed to see
       
   217         if not valid_segments:
       
   218             continue
       
   219             
       
   220         score = sum([seg.score for seg in valid_segments])
       
   221         complete_results.append({
       
   222                                  'list': valid_segments,
       
   223                                  'score': score,
       
   224                                  'content': content,                                         
       
   225                                  })                
   228       
   226       
   229     complete_results.sort(key=lambda k: k['score'])
   227     complete_results.sort(key=lambda k: k['score'])
   230     
   228     
   231     paginator = Paginator (complete_results, settings.LDT_RESULTS_PER_PAGE)
   229     paginator = Paginator (complete_results, settings.LDT_RESULTS_PER_PAGE)
   232     
   230