diff -r e1bed43f3a1b -r b0a34ce6fdcf web/hdalab/views/ajax.py --- 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):