Skip to content

Commit

Permalink
Merge pull request #8 from gbastien/master
Browse files Browse the repository at this point in the history
fix for "plone.batching fails if b_start is too high" see plone/Products.CMFPlone#639
  • Loading branch information
jensens committed Jul 15, 2015
2 parents dad62dc + 18cc2b7 commit 4659033
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 4 deletions.
4 changes: 3 additions & 1 deletion CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ Changelog
1.0.5 (unreleased)
------------------

- Nothing changed yet.
- Make sure pagenumber value is not bigger that numpages
or it fails in previous_pages when using orphan
[gbastien]


1.0.4 (2015-04-28)
Expand Down
4 changes: 4 additions & 0 deletions plone/batching/batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ def initialize(self, start, end, size):
self._pagenumber = calculate_pagenumber(
self.start, self.pagesize, self.overlap)

# Make sure self._pagenumber is <= self.numpages
if self._pagenumber > self.numpages:
self._pagenumber = self.numpages

@property
def navlist(self):
""" Pagenumber list for creating batch links """
Expand Down
17 changes: 14 additions & 3 deletions plone/batching/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ def test_lastpage_with_orphans(self):
def test_items_not_on_page(self):
batch = BaseBatch(range(20), 5, start=5)
self.assertEqual(batch.items_not_on_page,
[0, 1, 2, 3, 4, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
[0, 1, 2, 3, 4, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19])
self.assertEqual(list(batch), [5, 6, 7, 8, 9])

def test_batch_bsize(self):
Expand Down Expand Up @@ -155,6 +156,17 @@ def test_multiple_pages_longer(self):
batch = BaseBatch(range(12), 10)
self.assertEquals(batch.multiple_pages, True)

def test_pagenumber_never_over_numpages(self):
"""computed _pagenumber is never > numpages, this
makes previous_pages not fail."""
batch = BaseBatch([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3, 9)
self.assertEquals(batch.previous_pages, [1, 2, 3])
self.assertEquals(batch._pagenumber, 4)
# works especially with orphan
batch = BaseBatch([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3, 9, orphan=2)
self.assertEquals(batch.previous_pages, [1, 2])
self.assertEquals(batch._pagenumber, 3)


class TestQuantumBatch(unittest.TestCase):

Expand Down Expand Up @@ -194,8 +206,7 @@ def test_batchview_plone(self):
request = TestRequest(form={'a': 'foo', 'c': 'bar'})
setattr(request, 'ACTUAL_URL', 'http://nohost/dummy')
view = PloneBatchView(None, request)
rendered = view(batch, ['a', 'b'])

view(batch, ['a', 'b'])
self.assertEqual(view.make_link(3),
'http://nohost/dummy?a=foo&b_start:int=6')

Expand Down

0 comments on commit 4659033

Please sign in to comment.