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 %}