web/hdalab/views/ajax.py
changeset 150 b0a34ce6fdcf
parent 135 dd6578e36a57
child 152 e2ceeb903de6
--- a/web/hdalab/views/ajax.py	Mon Mar 12 17:19:02 2012 +0100
+++ b/web/hdalab/views/ajax.py	Mon Mar 12 18:06:54 2012 +0100
@@ -50,8 +50,8 @@
         wikipedia_label = label
     wikipedia_label = wikipedia_label[0].capitalize() + wikipedia_label[1:]
     resobj["wikipedia_url"] = "http://%s.wikipedia.org/wiki/%s" % (request.LANGUAGE_CODE,wikipedia_label.replace(' ', '_'))
-
-    resobj["links"] = [{'subject':tl.subject.label, 'object':tl.object.label} for tl in TagLinks.objects.select_related().filter(Q(subject__label__iexact = label) | Q(object__label__iexact = label))]
+# We don't use links at the moment, so I'll comment this line to speed up requests
+#    resobj["links"] = [{'subject':tl.subject.label, 'object':tl.object.label} for tl in TagLinks.objects.select_related().filter(Q(subject__label__iexact = label) | Q(object__label__iexact = label))]
 
     return HttpResponse(content=json.dumps(resobj), mimetype='application/json')
 
@@ -125,10 +125,23 @@
 def tagsearch(request):
     
     q = request.GET.get('term',None)
-    qs = Tag.objects.filter(label__icontains = q) if q else Tag.objects.all()        
-    res = qs.annotate(nb=Count('datasheet')).order_by('-nb')[:20]
+    if q:
+        lq = q.lower()
+    qs = Tag.objects.filter( Q(label__icontains = q ) | Q(dbpedia_fields__translations__label__icontains = q, dbpedia_fields__translations__language_code=request.LANGUAGE_CODE)) if q else Tag.objects.all()        
+    qs = qs.annotate(nb=Count('datasheet')).order_by('-nb')[:20]
+    res = []
     
-    return HttpResponse(content=json.dumps([{'label':t.label,'nb':t.nb} for t in res]), mimetype='application/json')
+    for t in qs:
+        resobj = {'value':t.label,'nb':t.nb}
+        transqs = DbpediaFieldsTranslation.objects.filter(master__tag = t, language_code=request.LANGUAGE_CODE)[0:1]
+        if transqs:
+            resobj['label'] = transqs.get().label
+        else:
+            resobj['label'] = t.label
+        if q is None or resobj['label'].lower().find(lq) != -1:
+            res.append(resobj)
+    
+    return HttpResponse(content=json.dumps(res), mimetype='application/json')
 
 
 def filter(request):