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()