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 |