summaryrefslogtreecommitdiff
path: root/search/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'search/views.py')
-rw-r--r--search/views.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/search/views.py b/search/views.py
new file mode 100644
index 0000000..eeace7c
--- /dev/null
+++ b/search/views.py
@@ -0,0 +1,34 @@
+from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
+from django.shortcuts import render
+
+from wagtail.core.models import Page
+from wagtail.search.models import Query
+
+
+def search(request):
+ search_query = request.GET.get('query', None)
+ page = request.GET.get('page', 1)
+
+ # Search
+ if search_query:
+ search_results = Page.objects.live().search(search_query)
+ query = Query.get(search_query)
+
+ # Record hit
+ query.add_hit()
+ else:
+ search_results = Page.objects.none()
+
+ # Pagination
+ paginator = Paginator(search_results, 10)
+ try:
+ search_results = paginator.page(page)
+ except PageNotAnInteger:
+ search_results = paginator.page(1)
+ except EmptyPage:
+ search_results = paginator.page(paginator.num_pages)
+
+ return render(request, 'search/search.html', {
+ 'search_query': search_query,
+ 'search_results': search_results,
+ })