--- 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):