From f80b9d0ac173a885404fa7113382d4a33eef4d5a Mon Sep 17 00:00:00 2001 From: Zambom Date: Thu, 5 Jan 2017 15:41:57 -0200 Subject: [PATCH] Adjusting pagination --- amadeus/templates/pagination.html | 14 +++++++++++++- amadeus/templatetags/pagination.py | 26 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/amadeus/templates/pagination.html b/amadeus/templates/pagination.html index a325121..f18d0b5 100644 --- a/amadeus/templates/pagination.html +++ b/amadeus/templates/pagination.html @@ -2,11 +2,23 @@
    - {% for page_number in paginator.page_range %} + {% if page_obj.has_previous %} +
  • «
  • + {% else %} +
  • «
  • + {% endif %} + + {% for page_number in page_numbers %} {{ page_number }} {% endfor %} + + {% if page_obj.has_next %} +
  • »
  • + {% else %} +
  • »
  • + {% endif %}
diff --git a/amadeus/templatetags/pagination.py b/amadeus/templatetags/pagination.py index 7b16a8e..fa2552d 100644 --- a/amadeus/templatetags/pagination.py +++ b/amadeus/templatetags/pagination.py @@ -10,6 +10,32 @@ def pagination(request, paginator, page_obj): 'page_obj': page_obj, } + page_numbers = [] + + if paginator.num_pages <= 10: + page_numbers = paginator.page_range + else: + init = page_obj.number - 5 + end = page_obj.number + 5 + + if init <= 0: + init = 1 + + if end > paginator.num_pages: + end = paginator.num_pages + 1 + + if (end - init) < 10: + if init == 1 and end < paginator.num_pages: + end += (10 - (end - init)) + elif init > 1 and end == paginator.num_pages + 1: + init -= (10 - (end - init)) + + for n in range(init, end): + if n > 0 and n <= paginator.num_pages: + page_numbers.append(n) + + context['page_numbers'] = page_numbers + getvars = request.GET.copy() if 'page' in getvars: -- libgit2 0.21.2