--- a/src/jocondelab/views/ajax.py Wed Jan 29 14:11:00 2014 +0100
+++ b/src/jocondelab/views/ajax.py Thu Jan 30 13:22:37 2014 +0100
@@ -7,6 +7,7 @@
import json
import logging
+import re
from django.conf import settings
from django.db.models import Sum
@@ -14,7 +15,6 @@
from django.http.response import HttpResponseBadRequest
from django.views.generic import TemplateView
import requests
-import re
from core.models import Notice, Thesaurus
from jocondelab.models import (DbpediaYears, DbpediaGeo, DbpediaFields,
@@ -30,7 +30,7 @@
count = request.GET.get('count', 20)
qs = DbpediaFields.objects.filter(term__nb_illustrated_notice__gt=0,language_code=lang)
if lang in [ "fr", "en", "de", "it", "es", "pt", "ca", "br", "eu", "oc" ]:
- qs = qs.filter(label__iregex=r"\y%s"%re.escape(q))
+ qs = qs.filter(label__iregex=r"\y%s"%re.sub("(\W)",lambda m: u'\\'+m.group(1),q, flags=re.UNICODE))
else:
qs = qs.filter(label__icontains=q)
qs = qs.values('dbpedia_uri','label').distinct().order_by('label')[:count]