Mercurial > piecrust2
comparison piecrust/dataproviders/blog.py @ 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 | d464c1b1d686 |
children |
comparison
equal
deleted
inserted
replaced
1087:20f779b5591b | 1088:c5f1936e9e89 |
---|---|
1 import time | 1 import time |
2 import collections.abc | |
2 from piecrust.dataproviders.base import DataProvider | 3 from piecrust.dataproviders.base import DataProvider |
3 from piecrust.dataproviders.pageiterator import PageIterator | 4 from piecrust.dataproviders.pageiterator import PageIterator |
4 from piecrust.sources.list import ListSource | 5 from piecrust.sources.list import ListSource |
5 from piecrust.sources.taxonomy import Taxonomy | 6 from piecrust.sources.taxonomy import Taxonomy |
6 | 7 |
7 | 8 |
8 class BlogDataProvider(DataProvider): | 9 class BlogDataProvider(DataProvider, collections.abc.Mapping): |
9 PROVIDER_NAME = 'blog' | 10 PROVIDER_NAME = 'blog' |
10 | 11 |
11 debug_render_doc = """Provides a list of blog posts and yearly/monthly | 12 debug_render_doc = """Provides a list of blog posts and yearly/monthly |
12 archives.""" | 13 archives.""" |
13 debug_render_dynamic = (['_debugRenderTaxonomies'] + | 14 debug_render_dynamic = (['_debugRenderTaxonomies'] + |
40 return self._yearly | 41 return self._yearly |
41 | 42 |
42 @property | 43 @property |
43 def months(self): | 44 def months(self): |
44 self._buildArchives() | 45 self._buildArchives() |
45 return self._montly | 46 return self._monthly |
46 | 47 |
47 @property | 48 @property |
48 def taxonomies(self): | 49 def taxonomies(self): |
49 return list(self._app.config.get('site/taxonomies').keys()) | 50 return list(self._app.config.get('site/taxonomies').keys()) |
50 | 51 |
51 def __getitem__(self, name): | 52 def __getitem__(self, name): |
53 if name in ['posts', 'years', 'months', 'taxonomies']: | |
54 return getattr(self, name) | |
55 | |
52 self._buildArchives() | 56 self._buildArchives() |
53 return self._taxonomies[name] | 57 return self._taxonomies[name] |
54 | 58 |
55 def __getattr__(self, name): | 59 def __getattr__(self, name): |
56 self._buildArchives() | 60 self._buildArchives() |
57 try: | 61 try: |
58 return self._taxonomies[name] | 62 return self._taxonomies[name] |
59 except KeyError: | 63 except KeyError: |
60 raise AttributeError("No such taxonomy: %s" % name) | 64 raise AttributeError("No such taxonomy: %s" % name) |
65 | |
66 def __len__(self): | |
67 return 4 + len(self.taxonomies) | |
68 | |
69 def __iter__(self): | |
70 yield 'posts' | |
71 yield 'years' | |
72 yield 'months' | |
73 yield 'taxonomies' | |
74 yield from self.taxonomies | |
61 | 75 |
62 def _debugRenderTaxonomies(self): | 76 def _debugRenderTaxonomies(self): |
63 return self.taxonomies | 77 return self.taxonomies |
64 | 78 |
65 def _buildPosts(self): | 79 def _buildPosts(self): |