Mercurial > piecrust2
diff piecrust/data/paginator.py @ 982:492b66482f12
pagination: Fix bad bug where all pages triggered pagination.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 30 Oct 2017 00:08:12 -0700 |
parents | 45ad976712ec |
children | 1c324407bd1f |
line wrap: on
line diff
--- a/piecrust/data/paginator.py Sun Oct 29 22:51:57 2017 -0700 +++ b/piecrust/data/paginator.py Mon Oct 30 00:08:12 2017 -0700 @@ -1,6 +1,7 @@ import math import logging from werkzeug.utils import cached_property +from piecrust.sources.base import ContentSource logger = logging.getLogger(__name__) @@ -29,6 +30,7 @@ self._pgn_filter = pgn_filter self._items_per_page = items_per_page self._pgn_set_on_ctx = False + self._is_content_source = isinstance(source, ContentSource) @property def is_loaded(self): @@ -91,8 +93,7 @@ if ipp is not None: return ipp - from piecrust.sources.base import ContentSource - if isinstance(self._source, ContentSource): + if self._is_content_source: ipp = self._source.config.get('items_per_page') if ipp is not None: return ipp @@ -191,7 +192,6 @@ from piecrust.data.filters import PaginationFilter from piecrust.dataproviders.pageiterator import ( PageIterator, HardCodedFilterIterator) - from piecrust.sources.base import ContentSource self._iterator = PageIterator( self._source, @@ -207,11 +207,10 @@ limit = self.items_per_page self._iterator.slice(offset, limit) - self._iterator._lockIterator() - self._iterator._load() + if self._is_content_source: + self._iterator._iter_event += self._onIteration - if isinstance(self._source, ContentSource): - self._onIteration(self._iterator) + self._iterator._lockIterator() def _getPageUri(self, index): return self._page.getUri(index)