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
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 = [
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')