##// END OF EJS Templates
Merge tip
Merge tip

File last commit:

r2100:e11ab41b default
r2146:69a1b01a merge lite
Show More
search.py
45 lines | 1.2 KiB | text/x-python | PythonLexer
neko259
Use own search form and view
r718 from django.shortcuts import render
from django.views.generic import View
neko259
Search posts by text and title
r1849 from django.db.models import Q
neko259
Refactoring
r917
neko259
Use own search form and view
r718 from boards.abstracts.paginator import get_paginator
from boards.forms import SearchForm, PlainErrorList
neko259
Remove dependency on haystack, use only built-in full text search
r1729 from boards.models import Post
neko259
Use own search form and view
r718
neko259
Refactoring
r917
MIN_QUERY_LENGTH = 3
RESULTS_PER_PAGE = 10
neko259
Small code cleanups
r721 FORM_QUERY = 'query'
CONTEXT_QUERY = 'query'
CONTEXT_FORM = 'form'
CONTEXT_PAGE = 'page'
REQUEST_PAGE = 'page'
neko259
Use own search form and view
r718 __author__ = 'neko259'
TEMPLATE = 'search/search.html'
class BoardSearchView(View):
def get(self, request):
neko259
Refactoring
r917 params = dict()
neko259
Use own search form and view
r718 form = SearchForm(request.GET, error_class=PlainErrorList)
neko259
Refactoring
r917 params[CONTEXT_FORM] = form
neko259
Use own search form and view
r718
if form.is_valid():
neko259
Small code cleanups
r721 query = form.cleaned_data[FORM_QUERY]
neko259
Refactoring
r917 if len(query) >= MIN_QUERY_LENGTH:
neko259
Search posts by text and title
r1849 results = Post.objects.filter(Q(text__icontains=query) |
Q(title__icontains=query)).order_by('-id')
neko259
Refactoring
r917 paginator = get_paginator(results, RESULTS_PER_PAGE)
neko259
Use own search form and view
r718
neko259
Refactoring
r917 page = int(request.GET.get(REQUEST_PAGE, '1'))
neko259
Use own search form and view
r718
neko259
Refactoring
r917 params[CONTEXT_PAGE] = paginator.page(page)
params[CONTEXT_QUERY] = query
return render(request, TEMPLATE, params)