Replace re.escape to avoid unneccessary escaping on unicode strings V00.63
authorymh <ymh.work@gmail.com>
Thu, 30 Jan 2014 13:22:37 +0100
changeset 324 70e8d83f8530
parent 323 e9f30991c702
child 325 8368282c62d7
Replace re.escape to avoid unneccessary escaping on unicode strings
src/jocondelab/views/ajax.py
--- 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]