comparison piecrust/data/paginator.py @ 280:8c0c53a315ae

data: Correctly build pagination filters when we know items are pages.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 01 Mar 2015 21:39:26 -0800
parents f130365568ff
children 9b75b49a4084
comparison
equal deleted inserted replaced
279:980bbbd0705e 280:8c0c53a315ae
1 import math 1 import math
2 import logging 2 import logging
3 from werkzeug.utils import cached_property 3 from werkzeug.utils import cached_property
4 from piecrust.data.filters import PaginationFilter 4 from piecrust.data.filters import PaginationFilter, page_value_accessor
5 from piecrust.data.iterators import PageIterator 5 from piecrust.data.iterators import PageIterator
6 from piecrust.sources.interfaces import IPaginationSource 6 from piecrust.sources.interfaces import IPaginationSource
7 7
8 8
9 logger = logging.getLogger(__name__) 9 logger = logging.getLogger(__name__)
195 offset=offset, limit=self.items_per_page, 195 offset=offset, limit=self.items_per_page,
196 locked=True) 196 locked=True)
197 self._iterator._iter_event += self._onIteration 197 self._iterator._iter_event += self._onIteration
198 198
199 def _getPaginationFilter(self): 199 def _getPaginationFilter(self):
200 f = PaginationFilter() 200 f = PaginationFilter(value_accessor=page_value_accessor)
201 201
202 if self._pgn_filter is not None: 202 if self._pgn_filter is not None:
203 f.addClause(self._pgn_filter.root_clause) 203 f.addClause(self._pgn_filter.root_clause)
204 204
205 if isinstance(self._source, IPaginationSource): 205 if isinstance(self._source, IPaginationSource):