from picture.forms import PictureImportForm
from stats.utils import piwik_track
+from wolnelektury.utils import re_escape
from . import emitters # Register our emitters
if (search_string is not None) and len(search_string) < 3:
search_string = None
if search_string:
+ search_string = re_escape(search_string)
books_author = books.filter(cached_author__iregex='\m' + search_string)
books_title = books.filter(title__iregex='\m' + search_string)
books_title = books_title.exclude(id__in=list(books_author.values_list('id', flat=True)))
import re
import json
+from wolnelektury.utils import re_escape
+
def match_word_re(word):
if 'sqlite' in settings.DATABASES['default']['ENGINE']:
def remove_query_syntax_chars(query, replace=' '):
- return query_syntax_chars.sub(' ', query)
+ return query_syntax_chars.sub(replace, query)
def did_you_mean(query, tokens):
if len(prefix) < 2:
return JsonResponse([], safe=False)
- prefix = remove_query_syntax_chars(prefix)
+ prefix = re_escape(' '.join(remove_query_syntax_chars(prefix).split()))
try:
limit = int(request.GET.get('max', ''))
'id': author.id,
'url': author.get_absolute_url(),
}
- for author in Tag.objects.filter(category='author', name__iregex='\m' + prefix)[:10]
+ for author in Tag.objects.filter(category='author', name__iregex=u'\m' + prefix)[:10]
]
if len(data) < limit:
data += [
import pytz
from inspect import getargspec
+import re
from django.core.mail import send_mail
from django.http import HttpResponse
from django.template import RequestContext
def writerows(self, rows):
for row in rows:
self.writerow(row)
+
+
+# the original re.escape messes with unicode
+def re_escape(s):
+ return re.sub(r"[(){}\[\].*?|^$\\+-]", r"\\\g<0>", s)