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)