def tag_search(request, klass, template): """Search subset of models with the given tag. Usess ``watson`` for the full-text search. """ # Generate a queryset from a model, manager or queryset: form = SearchForm(request.GET) page_no = pagination.get_page_no(request.GET) if form.is_valid(): queryset = get_queryset(klass) object_list = watson.search( form.cleaned_data['q'], models=(queryset, )) pagination_qs = '&%s' % urlencode({'q': form.cleaned_data['q']}) else: object_list = [] pagination_qs = '' page = pagination.get_page(object_list, page_no) page.object_list_top = [o.object for o in page.object_list_top] page.object_list_bottom = [o.object for o in page.object_list_bottom] context = { 'page': page, 'form': form, 'pagination_qs': pagination_qs, } return TemplateResponse(request, template, context)
def search(request): form = SearchForm(request.GET) if 'q' in request.GET else SearchForm() page_no = pagination.get_page_no(request.GET) if form.is_valid(): object_list = watson.search(form.cleaned_data['q']) pagination_qs = '&%s' % urlencode({'q': form.cleaned_data['q']}) else: object_list = [] pagination_qs = '' page = pagination.get_page(object_list, page_no) page.object_list_top = [o.object for o in page.object_list_top] page.object_list_bottom = [o.object for o in page.object_list_bottom] context = { 'form': form, 'page': page, 'pagination_qs': pagination_qs, } return TemplateResponse(request, 'search/object_list.html', context)