--- a/src/spel/views.py Tue Mar 11 14:42:13 2014 +0100
+++ b/src/spel/views.py Tue Mar 11 17:43:28 2014 +0100
@@ -6,6 +6,8 @@
import time
from django.conf import settings
from django.views.generic import TemplateView
+from itertools import groupby
+from operator import itemgetter
from tagging.models import Tag, TaggedItem
from ldt.ldt_utils.models import Segment, Content
@@ -94,12 +96,39 @@
def get(self, request):
q = request.GET.get("q", "")
- field = "abstract"
page = 1
content_list = None
- results, nb, nb_segment = get_search_results(request, q, field, page, content_list)
+ if q!="":
+ field = "abstract"
+ results, nb_contents, nb_segments = get_search_results(request, q, field, page, content_list)
+ results = results.object_list
+ else:
+ type_inter_param = request.GET.get("type_inter", "")
+ seg_queryset = []
+ results = []
+ tagged_segs = []
+ if type_inter_param!="":
+ type_inter = [("type_inter: " + t) for t in type_inter_param.split(",")]
+ tags = Tag.objects.filter(name__in=type_inter)
+ # Get segments from tagged items
+ tagged_segs = TaggedItem.objects.get_by_model(Segment, tags).values()
+ # Prefetch all contents
+ all_contents = Content.objects.filter(iri_id__in=[s['iri_id'] for s in tagged_segs])
+ for iri_id, items in groupby(tagged_segs, itemgetter('iri_id')):
+ # Get good content
+ content = None
+ content_filter = filter(lambda e: e.iri_id == iri_id, all_contents)
+ if len(content_filter)>0:
+ content = content_filter[0]
+ if content is None:
+ continue
+ # Get segments
+ s = list(items)
+ results.append({ 'content': content, 'list': s })
+ nb_contents = len(results)
+ nb_segments = len(tagged_segs)
- context = {"results": results.object_list, "nb_contents": nb, "nb_annotations": nb_segment}
+ context = {"results": results, "nb_contents": nb_contents, "nb_annotations": nb_segments}
return self.render_to_response(context)