diff piecrust/dataproviders/pageiterator.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 d4e0c53aa6e8
line wrap: on
line diff
--- a/piecrust/dataproviders/pageiterator.py	Sun Oct 29 22:51:57 2017 -0700
+++ b/piecrust/dataproviders/pageiterator.py	Mon Oct 30 00:08:12 2017 -0700
@@ -77,7 +77,7 @@
 
         combined_source = _CombinedSource(list(reversed(self._sources)))
         self._it = PageIterator(combined_source, current_page=self._page)
-        self._it._iter_event += self._onIteration
+        self._it._load_event += self._onIteration
 
     def _onIteration(self, it):
         if not self._iterated:
@@ -106,6 +106,7 @@
         self._next_page = None
         self._prev_page = None
         self._locked = False
+        self._load_event = Event()
         self._iter_event = Event()
         self._current_page = current_page
         self._initIterator()
@@ -137,6 +138,7 @@
 
     def __iter__(self):
         self._load()
+        self._iter_event.fire(self)
         return iter(self._cache)
 
     def __getattr__(self, name):
@@ -203,10 +205,6 @@
             return self._pagination_slicer.has_more
         return False
 
-    @property
-    def _is_loaded_and_has_more(self):
-        return self._is_loaded and self._has_more
-
     def _simpleWrap(self, it_class, *args, **kwargs):
         self._ensureUnlocked()
         self._ensureUnloaded()
@@ -296,7 +294,7 @@
             pn_it = PaginationDataBuilderIterator(iter(pn))
             self._prev_page, self._next_page = (list(pn_it))
 
-        self._iter_event.fire(self)
+        self._load_event.fire(self)
 
     def _debugRenderDoc(self):
         return "Contains %d items" % len(self)