changeset 1123:1a214de1e1f7

data: Fix bug with page family data not returning correct `is_dir` value.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 27 Feb 2018 22:36:26 -0800
parents 587bccf72d75
children 4081f3dba541
files piecrust/data/linker.py
diffstat 1 files changed, 8 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/piecrust/data/linker.py	Tue Feb 27 21:52:21 2018 -0800
+++ b/piecrust/data/linker.py	Tue Feb 27 22:36:26 2018 -0800
@@ -98,7 +98,7 @@
 
     @property
     def has_children(self):
-        return bool(self.children)
+        return bool(self._getAllChildren())
 
     @property
     def children(self):
@@ -174,7 +174,8 @@
         return self._parent_group
 
     def _makePageData(self, page):
-        return _PageData(self, page)
+        is_self = page.content_spec == self._content_item.spec
+        return _PageData(page, is_self)
 
     def _makeGroupData(self, group):
         return _GroupData(self._source, group)
@@ -190,19 +191,15 @@
 
 
 class _PageData(PaginationData):
-    def __init__(self, linker, page):
+    def __init__(self, page, is_self):
         super().__init__(page)
-        self._linker = linker
+        self.is_self = is_self
+        self.is_page = True
 
     def _load(self):
         super()._load()
-        self._mapValue('is_page', True)
-        self._mapValue(
-            'is_self',
-            self._page.content_spec == self._linker._content_item.spec)
-
-        self._mapLoader('is_dir', lambda d, n: self._linker.has_children)
-        self._mapLoader('is_group', lambda d, n: self._linker.has_children)
+        self._mapLoader('is_dir', lambda d, n: self.family.has_children)
+        self._mapLoader('is_group', lambda d, n: self.family.has_children)
 
 
 class _GroupData: