src/spel/views.py
changeset 15 acf4460a8074
parent 13 b425f929987d
child 16 a41d76310c7d
--- 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)