Mercurial > piecrust2
changeset 15:dc8a6ff88f37
Fix how the `Paginator` gets the numer of items per page.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 18 Aug 2014 16:51:16 -0700 |
parents | 395eb38f2dfb |
children | 3a13b43e77c1 |
files | piecrust/data/paginator.py |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/data/paginator.py Mon Aug 18 16:50:45 2014 -0700 +++ b/piecrust/data/paginator.py Mon Aug 18 16:51:16 2014 -0700 @@ -21,13 +21,15 @@ 'total_item_count', 'total_page_count', 'next_item', 'prev_item'] - def __init__(self, page, source, uri, page_num=1, pgn_filter=None): + def __init__(self, page, source, uri, page_num=1, pgn_filter=None, + items_per_page=-1): self._parent_page = page self._source = source self._uri = uri self._page_num = page_num self._iterator = None self._pgn_filter = pgn_filter + self._items_per_page = items_per_page self._pgn_set_on_ctx = False @property @@ -83,11 +85,16 @@ @cached_property def items_per_page(self): + if self._items_per_page > 0: + return self._items_per_page if self._parent_page: ipp = self._parent_page.config.get('items_per_page') if ipp is not None: return ipp - return self._source.getItemsPerPage() + if isinstance(self._source, IPaginationSource): + return self._source.getItemsPerPage() + raise Exception("No way to figure out how many items to display " + "per page.") @property def items_this_page(self):