Mercurial > piecrust2
comparison piecrust/dataproviders/blog.py @ 1080:d464c1b1d686
data: Fix debug rendering of the blog data provider.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 15 Feb 2018 21:15:49 -0800 |
parents | 57283302b3ee |
children | c5f1936e9e89 |
comparison
equal
deleted
inserted
replaced
1079:00a0a65d08e6 | 1080:d464c1b1d686 |
---|---|
1 import time | 1 import time |
2 import collections.abc | |
3 from piecrust.dataproviders.base import DataProvider | 2 from piecrust.dataproviders.base import DataProvider |
4 from piecrust.dataproviders.pageiterator import PageIterator | 3 from piecrust.dataproviders.pageiterator import PageIterator |
5 from piecrust.sources.list import ListSource | 4 from piecrust.sources.list import ListSource |
6 from piecrust.sources.taxonomy import Taxonomy | 5 from piecrust.sources.taxonomy import Taxonomy |
7 | 6 |
8 | 7 |
9 class BlogDataProvider(DataProvider, collections.abc.Mapping): | 8 class BlogDataProvider(DataProvider): |
10 PROVIDER_NAME = 'blog' | 9 PROVIDER_NAME = 'blog' |
11 | 10 |
12 debug_render_doc = """Provides a list of blog posts and yearly/monthly | 11 debug_render_doc = """Provides a list of blog posts and yearly/monthly |
13 archives.""" | 12 archives.""" |
14 debug_render_dynamic = (['_debugRenderTaxonomies'] + | 13 debug_render_dynamic = (['_debugRenderTaxonomies'] + |
43 @property | 42 @property |
44 def months(self): | 43 def months(self): |
45 self._buildArchives() | 44 self._buildArchives() |
46 return self._montly | 45 return self._montly |
47 | 46 |
47 @property | |
48 def taxonomies(self): | |
49 return list(self._app.config.get('site/taxonomies').keys()) | |
50 | |
48 def __getitem__(self, name): | 51 def __getitem__(self, name): |
49 self._buildArchives() | 52 self._buildArchives() |
50 return self._taxonomies[name] | 53 return self._taxonomies[name] |
51 | 54 |
52 def __getattr__(self, name): | 55 def __getattr__(self, name): |
54 try: | 57 try: |
55 return self._taxonomies[name] | 58 return self._taxonomies[name] |
56 except KeyError: | 59 except KeyError: |
57 raise AttributeError("No such taxonomy: %s" % name) | 60 raise AttributeError("No such taxonomy: %s" % name) |
58 | 61 |
59 def __iter__(self): | |
60 self._buildPosts() | |
61 self._buildArchives() | |
62 return ['posts', 'years', 'months'] + list( | |
63 sorted(self._taxonomies.keys())) | |
64 | |
65 def __len__(self): | |
66 self._buildPosts() | |
67 self._buildArchives() | |
68 return 3 + len(self._taxonomies) | |
69 | |
70 def _debugRenderTaxonomies(self): | 62 def _debugRenderTaxonomies(self): |
71 return list(self._app.config.get('site/taxonomies').keys()) | 63 return self.taxonomies |
72 | 64 |
73 def _buildPosts(self): | 65 def _buildPosts(self): |
74 if self._posts is None: | 66 if self._posts is None: |
75 it = PageIterator(self._sources[0], current_page=self._page) | 67 it = PageIterator(self._sources[0], current_page=self._page) |
76 self._onIteration() | 68 self._onIteration() |