From 4581f1e586fc650422152c699e489868649a844b Mon Sep 17 00:00:00 2001 From: Diana Boiangiu Date: Thu, 30 Mar 2017 16:12:04 +0300 Subject: [PATCH 1/3] [refs #83728] Add pagination for search --- gemet/thesaurus/templates/header.html | 11 ++++----- gemet/thesaurus/templates/search.html | 20 +++++++++++++--- gemet/thesaurus/urls.py | 2 +- gemet/thesaurus/views.py | 34 +++++++++++++++++++++++++-- 4 files changed, 55 insertions(+), 12 deletions(-) diff --git a/gemet/thesaurus/templates/header.html b/gemet/thesaurus/templates/header.html index f1f1bef..88234b1 100644 --- a/gemet/thesaurus/templates/header.html +++ b/gemet/thesaurus/templates/header.html @@ -21,8 +21,8 @@ Alphabetic Listings - - + + Search Thesaurus @@ -32,19 +32,18 @@ -
- {% csrf_token %} {{ search_form }}
diff --git a/gemet/thesaurus/templates/search.html b/gemet/thesaurus/templates/search.html index 5c3e59d..9680149 100644 --- a/gemet/thesaurus/templates/search.html +++ b/gemet/thesaurus/templates/search.html @@ -6,11 +6,10 @@ {% endblock %} {% block content %} - {% include 'header.html' with view='search' %} - + {% include 'header.html' with view='search' page=1 query=query %} {% if query %}
- {{ concepts|length }} results found. + {{ paginator.count }} results found. Searched for '{{ query }}'
{% if concepts|length %} @@ -50,6 +49,21 @@ {% endif %} {% endif %} + {% endblock %} {% block version %} diff --git a/gemet/thesaurus/urls.py b/gemet/thesaurus/urls.py index 07aedd5..e93e9ee 100644 --- a/gemet/thesaurus/urls.py +++ b/gemet/thesaurus/urls.py @@ -66,7 +66,7 @@ url(r'^exports/rdf$', views.DownloadView.as_view(), name='download'), # Search - url(r'^search/$', views.SearchView.as_view(), name='search'), + url(r'^search/page/(?P\d+)/$', views.SearchView.as_view(), name='search'), # List pages url(r'^groups/$', views.GroupsView.as_view(), name='groups'), diff --git a/gemet/thesaurus/views.py b/gemet/thesaurus/views.py index c1ca67c..2edbc83 100644 --- a/gemet/thesaurus/views.py +++ b/gemet/thesaurus/views.py @@ -7,6 +7,7 @@ from django.http import Http404, StreamingHttpResponse from django.shortcuts import render, get_object_or_404, redirect +from django.core.paginator import Paginator from django.core.urlresolvers import reverse from django.db.models import Q from django.views import View @@ -236,17 +237,46 @@ def get_context_data(self, **kwargs): "namespace": Term.NAMESPACE, "status_values": self.status_values, }) + if 'paginator' in kwargs: + context.update({ + "paginator": kwargs['paginator'] + }) return context - def form_valid(self, form): + def form_valid(self, form, **kwargs): self.query = form.cleaned_data['query'] self.concepts = search_queryset( self.query, self.language, status_values=self.status_values, ) + page = kwargs.get('page', 1) + paginator = Paginator(self.concepts, 25) + self.concepts = paginator.page(page) + return self.render_to_response( + self.get_context_data( + form=form, + paginator=paginator + ) + ) + + def get_form_kwargs(self): + kwargs = super(SearchView, self).get_form_kwargs() + if self.request.method in ('GET', ): + kwargs.update({ + 'data': self.request.GET + }) + return kwargs - return self.render_to_response(self.get_context_data(form=form)) + def get(self, request, *args, **kwargs): + if 'query' in request.GET: + form = self.get_form() + if form.is_valid(): + return self.form_valid(form, **kwargs) + else: + return self.form_invalid(form) + else: + return super(SearchView, self).get(request, **kwargs) class RelationsView(HeaderMixin, StatusMixin, VersionMixin, TemplateView): From 1ecb3904b23ade1cac34a299e0a6c4c31dafefe3 Mon Sep 17 00:00:00 2001 From: Diana Boiangiu Date: Thu, 6 Apr 2017 17:23:45 +0300 Subject: [PATCH 2/3] [refs #83728] Make page param optional for search url; Use same layout for page's display on search --- gemet/thesaurus/templates/header.html | 8 +++---- gemet/thesaurus/templates/search.html | 33 +++++++++++++++++---------- gemet/thesaurus/urls.py | 2 +- gemet/thesaurus/views.py | 21 +++++++++++------ 4 files changed, 40 insertions(+), 24 deletions(-) diff --git a/gemet/thesaurus/templates/header.html b/gemet/thesaurus/templates/header.html index 88234b1..b7dfb26 100644 --- a/gemet/thesaurus/templates/header.html +++ b/gemet/thesaurus/templates/header.html @@ -21,8 +21,8 @@ Alphabetic Listings - - + + Search Thesaurus @@ -32,7 +32,7 @@