X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/eb2eb95bfbfe8c777c4192ea434a0e999edf3a51..f2b4341b32254061ebd70a865066e7518de22ac8:/src/search/views.py diff --git a/src/search/views.py b/src/search/views.py index b6e290b87..6ff0f7ab6 100644 --- a/src/search/views.py +++ b/src/search/views.py @@ -11,6 +11,7 @@ from catalogue.models import Book, Tag from pdcounter.models import Author from picture.models import Picture from search.index import Search, SearchResult, PictureResult +from .forms import SearchFilters from suggest.forms import PublishingSuggestForm import re import json @@ -85,15 +86,19 @@ def hint(request, mozhint=False, param='term'): for author in authors[:limit] ] if len(data) < limit: - data += [ - { - 'label': b.title, - 'author': b.author_unicode(), - 'id': b.id, - 'url': b.get_absolute_url() - } - for b in Book.objects.filter(findable=True, title__iregex='\m' + prefix)[:limit-len(data)] - ] + for b in Book.objects.filter(findable=True, title__iregex='\m' + prefix)[:limit-len(data)]: + author_str = b.author_unicode() + translator = b.translator() + if translator: + author_str += ' (tłum. ' + translator + ')' + data.append( + { + 'label': b.title, + 'author': author_str, + 'id': b.id, + 'url': b.get_absolute_url() + } + ) if mozhint: data = [ @@ -112,8 +117,30 @@ def hint(request, mozhint=False, param='term'): return JsonResponse(data, safe=False) + +@cache.never_cache +def search(request): + filters = SearchFilters(request.GET) + ctx = { + 'title': 'Wynik wyszukiwania', + 'query': filters.data['q'], + 'filters': filters, + } + if filters.is_valid(): + ctx['results'] = filters.results() + for k, v in ctx['results'].items(): + if v: + ctx['hasresults'] = True + break + return render(request, 'search/results.html', ctx) + + @cache.never_cache def main(request): + if request.EXPERIMENTS['search'].value: + request.EXPERIMENTS['layout'].override(True) + return search(request) + query = request.GET.get('q', '') format = request.GET.get('format')