X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/5074895f7d96cbd5fda6a4d566ddb25533137fd4..d850c26d30dc10b20278e537198e698b84c64e7b:/src/search/views.py diff --git a/src/search/views.py b/src/search/views.py index 70a216e3b..7e512be14 100644 --- a/src/search/views.py +++ b/src/search/views.py @@ -7,16 +7,16 @@ from django.shortcuts import render_to_response from django.template import RequestContext from django.views.decorators import cache from django.http import HttpResponse, JsonResponse -from django.utils.translation import ugettext as _ from catalogue.utils import split_tags from catalogue.models import Book, Tag -from pdcounter.models import Author as PDCounterAuthor, BookStub as PDCounterBook from search.index import Search, SearchResult from suggest.forms import PublishingSuggestForm import re import json +from wolnelektury.utils import re_escape + def match_word_re(word): if 'sqlite' in settings.DATABASES['default']['ENGINE']: @@ -29,7 +29,7 @@ query_syntax_chars = re.compile(r"[\\/*:(){}]") 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): @@ -64,30 +64,31 @@ def hint(request): 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', '')) except ValueError: - limit = -1 + limit = 20 else: if limit < 1: - limit = -1 + limit = 20 + authors = Tag.objects.filter( + category='author', name_pl__iregex='\m' + prefix).only('name', 'id', 'slug', 'category') data = [ { 'label': author.name, - 'category': _('author'), 'id': author.id, 'url': author.get_absolute_url(), } - for author in Tag.objects.filter(category='author', name__iregex='\m' + prefix)[:10] + for author in authors[:limit] ] if len(data) < limit: data += [ { - 'label': '%s, %s' % (b.title, b.author_unicode()), - 'category': _('book'), + 'label': b.title, + 'author': b.author_unicode(), 'id': b.id, 'url': b.get_absolute_url() }