Skip to content

Commit

Permalink
Fix window exceeding page range
Browse files Browse the repository at this point in the history
Resolve issue zyga#33
  • Loading branch information
atugushev committed Jan 2, 2016
1 parent cfb14ce commit 4e8ac7d
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
2 changes: 1 addition & 1 deletion linaro_django_pagination/templatetags/pagination_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ def paginate(context, window=DEFAULT_WINDOW, margin=DEFAULT_MARGIN):
window_end = window_end - window_start
window_start = 0
if window_end > paginator.num_pages:
window_start = window_start - (window_end - paginator.num_pages)
window_start = max(0, window_start - (window_end - paginator.num_pages))
window_end = paginator.num_pages
pages = page_range[window_start:window_end]

Expand Down
32 changes: 32 additions & 0 deletions linaro_django_pagination/tests/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,38 @@ def test_on_end_page_16(self):
)


class NoEllipsisTestCase(SimpleTestCase):
"""
Tests a case where should be no any ellipsis pages.
"""
def setUp(self):
self.p = Paginator(range(100), 25)

def test_on_start(self):
self.assertListEqual(
paginate({'paginator': self.p, 'page_obj': self.p.page(1)}, 2, 0)['pages'],
[1, 2, 3, 4],
)

def test_in_middle_page_2(self):
self.assertListEqual(
paginate({'paginator': self.p, 'page_obj': self.p.page(2)}, 2, 0)['pages'],
[1, 2, 3, 4],
)

def test_in_middle_page_3(self):
self.assertListEqual(
paginate({'paginator': self.p, 'page_obj': self.p.page(3)}, 2, 0)['pages'],
[1, 2, 3, 4],
)

def test_on_end(self):
self.assertListEqual(
paginate({'paginator': self.p, 'page_obj': self.p.page(4)}, 2, 0)['pages'],
[1, 2, 3, 4],
)


class SpecialTestCase(SimpleTestCase):
def test_middle_with_no_window_and_margin_1(self):
p = Paginator(range(31), 2)
Expand Down

0 comments on commit 4e8ac7d

Please sign in to comment.