class Pagination:
def __init__(self, items=[], page_size=10):
self._items = items
self.page_size = page_size
self._current = 0 if items == [] else 1
self.num_pages = len(range(1, len(self._items)+1, self.page_size))
Pagination.current = self._current
def first_page(self):
f_page = self._items[:self.page_size+1]
self._current = 1
return self
def last_page(self):
items = len(self._items)
self._current = items // self.page_size + bool(items % self.page_size)
return self
def get_current_page(self, current=0):
self._current += current
return self._current
def get_visible_items(self):
if self._current == 0:
return self._items
elif self._current == self.num_pages:
start = -(len(self._items) % self.page_size)
return self._items[start:]
else:
pages = list(range(0, len(self._items), self.page_size))
start = pages[Pagination.current - 1]
visible_current = self._items[start:start + self.page_size]
return visible_current
def prev_page(self):
if self._current == 1:
return self.first_page()
else:
prev_page = self.get_current_page(-1)
self._current = prev_page
return self
def next_page(self):
if self._current == self.num_pages:
return self.last_page()
else:
next_page = self.get_current_page(1)
self._current = next_page
return self
def go_to_page(self, n):
pages = list(range(1, len(self._items), self.page_size))
if n > len(pages):
return self.last_page()
elif n < len(pages):
return self.first_page()
else:
to_page_n = pages[n - 1]
self._current = to_page_n
return self
def get_page_size(self):
items = len(self._items)
if self._items == [] and self.page_size == 10:
return 0
if self._current == self.num_pages:
return items % self.page_size
if self._current < self.num_pages and self.num_pages != 0:
return self.page_size
def get_items(self):
return self._items
from unittest import TestCase
class Evaluate(TestCase):
def test_pag(self):
import pag
defaultPagination = pag.Pagination()
self.assertEquals(defaultPagination.get_page_size(), 10)
AssertionError Traceback (most recent call last)
<ipython-input-48-6d9046559f50> in <module>
1 e = Evaluate()
----> 2 e.test_pag()
<ipython-input-47-27a10c41b42b> in test_pag(self)
6
7 defaultPagination = pag.Pagination()
----> 8 self.assertEquals(defaultPagination.get_page_size(), 10)
9 self.assertEquals(defaultPagination.get_items(), [])
10
C:\ProgramData\Anaconda3\lib\unittest\case.py in deprecated_func(*args, **kwargs)
1336 'Please use {0} instead.'.format(original_func.__name__),
1337 DeprecationWarning, 2)
-> 1338 return original_func(*args, **kwargs)
1339 return deprecated_func
1340
C:\ProgramData\Anaconda3\lib\unittest\case.py in assertEqual(self, first, second, msg)
837 """
838 assertion_func = self._getAssertEqualityFunc(first, second)
--> 839 assertion_func(first, second, msg=msg)
840
841 def assertNotEqual(self, first, second, msg=None):
C:\ProgramData\Anaconda3\lib\unittest\case.py in _baseAssertEqual(self, first, second, msg)
830 standardMsg = '%s != %s' % _common_shorten_repr(first, second)
831 msg = self._formatMessage(msg, standardMsg)
--> 832 raise self.failureException(msg)
833
834 def assertEqual(self, first, second, msg=None):
AssertionError: 0 != 10