Skip to content

Commit 0f49cfc

Browse files
committed
fix: rollback to previous elided page impl
1 parent 0c123a3 commit 0f49cfc

1 file changed

Lines changed: 21 additions & 7 deletions

File tree

core/templatetags/pagination_tags.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,29 @@ def resolve_pagination(context, current=None, total=None):
2525

2626
@register.simple_tag
2727
def pagination_range(page, window=2):
28-
"""Return an elided page range using Django's built-in get_elided_page_range.
28+
"""Return an elided page range for the given Page object.
2929
30-
Each element is either an integer (page number) or Paginator.ELLIPSIS ('…').
30+
Always uses an ellipsis for any gap (even a single page), unlike Django's
31+
built-in get_elided_page_range which fills single-page gaps with the page
32+
number. Each element is either an integer or '…'.
3133
"""
32-
return list(
33-
page.paginator.get_elided_page_range(
34-
page.number, on_each_side=window, on_ends=1
35-
)
36-
)
34+
num_pages = page.paginator.num_pages
35+
current = page.number
36+
37+
if num_pages <= 1:
38+
return list(range(1, num_pages + 1))
39+
40+
window_start = max(2, current - window)
41+
window_end = min(num_pages - 1, current + window)
42+
43+
items = [1]
44+
if window_start > 2:
45+
items.append("…")
46+
items.extend(range(window_start, window_end + 1))
47+
if window_end < num_pages - 1:
48+
items.append("…")
49+
items.append(num_pages)
50+
return items
3751

3852

3953
@register.simple_tag(takes_context=True)

0 commit comments

Comments
 (0)