diff --git a/patchwork/paginator.py b/patchwork/paginator.py index 5a9e52ed..1b7bd914 100644 --- a/patchwork/paginator.py +++ b/patchwork/paginator.py @@ -79,6 +79,18 @@ def __init__(self, request, objects): if n > 0 and n <= pages ] + self.show_leading_ellipsis = False + if self.leading_set and self.adjacent_set: + # prevent e.g. 1 2 ... 3 4 5 ... 8 9 + if self.leading_set[-1] != self.adjacent_set[0] - 1: + self.show_leading_ellipsis = True + + self.show_trailing_ellipsis = False + if self.trailing_set and self.adjacent_set: + # prevent e.g. 1 2 ... 5 6 7 ... 8 9 + if self.trailing_set[0] != self.adjacent_set[-1] + 1: + self.show_trailing_ellipsis = True + self.long_page = ( len(self.current_page.object_list) >= LONG_PAGE_THRESHOLD ) diff --git a/patchwork/templates/patchwork/partials/pagination.html b/patchwork/templates/patchwork/partials/pagination.html index 94be806d..8048370d 100644 --- a/patchwork/templates/patchwork/partials/pagination.html +++ b/patchwork/templates/patchwork/partials/pagination.html @@ -10,10 +10,10 @@ « {% endif %} -{% if page.paginator.leading_set %} {% for p in page.paginator.leading_set %} {{ p }} {% endfor %} +{% if page.paginator.show_leading_ellipsis %} … {% endif %} @@ -25,12 +25,12 @@ {% endif %} {% endfor %} -{% if page.paginator.trailing_set %} +{% if page.paginator.show_trailing_ellipsis %} … +{% endif %} {% for p in page.paginator.trailing_set %} {{ p }} {% endfor %} -{% endif %} {% if page.has_next %}