changeset 1088:c5f1936e9e89

data: Fix recently introduced bug with blog data provider.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 15 Feb 2018 23:46:37 -0800
parents 20f779b5591b
children a4d7ff2cdc5c
files piecrust/dataproviders/blog.py
diffstat 1 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/piecrust/dataproviders/blog.py	Thu Feb 15 22:29:40 2018 -0800
+++ b/piecrust/dataproviders/blog.py	Thu Feb 15 23:46:37 2018 -0800
@@ -1,11 +1,12 @@
 import time
+import collections.abc
 from piecrust.dataproviders.base import DataProvider
 from piecrust.dataproviders.pageiterator import PageIterator
 from piecrust.sources.list import ListSource
 from piecrust.sources.taxonomy import Taxonomy
 
 
-class BlogDataProvider(DataProvider):
+class BlogDataProvider(DataProvider, collections.abc.Mapping):
     PROVIDER_NAME = 'blog'
 
     debug_render_doc = """Provides a list of blog posts and yearly/monthly
@@ -42,13 +43,16 @@
     @property
     def months(self):
         self._buildArchives()
-        return self._montly
+        return self._monthly
 
     @property
     def taxonomies(self):
         return list(self._app.config.get('site/taxonomies').keys())
 
     def __getitem__(self, name):
+        if name in ['posts', 'years', 'months', 'taxonomies']:
+            return getattr(self, name)
+
         self._buildArchives()
         return self._taxonomies[name]
 
@@ -59,6 +63,16 @@
         except KeyError:
             raise AttributeError("No such taxonomy: %s" % name)
 
+    def __len__(self):
+        return 4 + len(self.taxonomies)
+
+    def __iter__(self):
+        yield 'posts'
+        yield 'years'
+        yield 'months'
+        yield 'taxonomies'
+        yield from self.taxonomies
+
     def _debugRenderTaxonomies(self):
         return self.taxonomies