Mercurial > piecrust2
diff piecrust/data/paginator.py @ 867:757fba54bfd3
refactor: Improve pagination and iterators to work with other sources.
This makes the assets work as a pagination source again.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 12 Jun 2017 22:20:58 -0700 |
parents | 08e02c2a2a1a |
children | dcdec4b951a1 |
line wrap: on
line diff
--- a/piecrust/data/paginator.py Mon Jun 12 22:10:50 2017 -0700 +++ b/piecrust/data/paginator.py Mon Jun 12 22:20:58 2017 -0700 @@ -90,9 +90,11 @@ if ipp is not None: return ipp - ipp = self._source.config.get('items_per_page') - if ipp is not None: - return ipp + from piecrust.sources.base import ContentSource + if isinstance(self._source, ContentSource): + ipp = self._source.config.get('items_per_page') + if ipp is not None: + return ipp raise Exception("No way to figure out how many items to display " "per page.") @@ -188,11 +190,11 @@ from piecrust.data.filters import PaginationFilter from piecrust.dataproviders.pageiterator import ( PageIterator, HardCodedFilterIterator) + from piecrust.sources.base import ContentSource self._iterator = PageIterator( self._source, current_page=self._page) - #self._iterator._iter_event += self._onIteration if self._pgn_filter is not None: pag_fil = PaginationFilter() @@ -206,7 +208,8 @@ self._iterator._lockIterator() - self._onIteration(self._iterator) + if isinstance(self._source, ContentSource): + self._onIteration(self._iterator) def _getPageUri(self, index): return self._page.getUri(index)