Added pillar.web.utils.last_page_index()
This returns the last page number (base-1) of a paged Eve result.
This commit is contained in:
parent
129ec94608
commit
604d6c1a07
@ -205,3 +205,24 @@ def is_valid_id(some_id):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def last_page_index(meta_info):
|
||||||
|
"""Eve pagination; returns the index of the last page.
|
||||||
|
|
||||||
|
:param meta_info: Eve's '_meta' response.
|
||||||
|
:returns: Eve page number (base-1) of the last page.
|
||||||
|
:rtype: int
|
||||||
|
"""
|
||||||
|
|
||||||
|
total = meta_info['total']
|
||||||
|
if total == 0:
|
||||||
|
return 1
|
||||||
|
|
||||||
|
per_page = meta_info['max_results']
|
||||||
|
|
||||||
|
pages = total // per_page
|
||||||
|
if total % per_page == 0:
|
||||||
|
return pages
|
||||||
|
|
||||||
|
return pages + 1
|
||||||
|
@ -108,3 +108,17 @@ class PrettyDateTest(unittest.TestCase):
|
|||||||
self.assertEqual('in 2 weeks at 11:46', pd(days=14))
|
self.assertEqual('in 2 weeks at 11:46', pd(days=14))
|
||||||
self.assertEqual('08 Dec at 11:46', pd(days=30))
|
self.assertEqual('08 Dec at 11:46', pd(days=30))
|
||||||
self.assertEqual('08 Dec 2017 at 11:46', pd(days=30 + 365))
|
self.assertEqual('08 Dec 2017 at 11:46', pd(days=30 + 365))
|
||||||
|
|
||||||
|
|
||||||
|
class EvePaginationTest(unittest.TestCase):
|
||||||
|
def test_last_page_index(self):
|
||||||
|
from pillar.web.utils import last_page_index as lpi
|
||||||
|
|
||||||
|
self.assertEqual(1, lpi({'total': 0, 'max_results': 313}))
|
||||||
|
self.assertEqual(1, lpi({'total': 5, 'max_results': 10}))
|
||||||
|
self.assertEqual(1, lpi({'total': 5, 'max_results': 5}))
|
||||||
|
self.assertEqual(2, lpi({'total': 6, 'max_results': 5}))
|
||||||
|
self.assertEqual(2, lpi({'total': 9, 'max_results': 5}))
|
||||||
|
self.assertEqual(2, lpi({'total': 10, 'max_results': 5}))
|
||||||
|
self.assertEqual(3, lpi({'total': 11, 'max_results': 5}))
|
||||||
|
self.assertEqual(404129352, lpi({'total': 2828905463, 'max_results': 7}))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user