comparison piecrust/data/provider.py @ 7:343d08ef5668

More PieCrust 3 fixes, and a couple of miscellaneous bug fixes.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 16 Aug 2014 15:07:22 -0700
parents 474c9882decf
children 923699e816d0
comparison
equal deleted inserted replaced
6:f5ca5c5bed85 7:343d08ef5668
1 import time 1 import time
2 import itertools
3 from piecrust.data.iterators import PageIterator 2 from piecrust.data.iterators import PageIterator
4 from piecrust.sources.base import ArraySource 3 from piecrust.sources.base import ArraySource
5 4
6 5
7 class DataProvider(object): 6 class DataProvider(object):
16 self._page = page 15 self._page = page
17 self._user_data = user_data 16 self._user_data = user_data
18 17
19 def __getattr__(self, name): 18 def __getattr__(self, name):
20 if self._user_data is not None: 19 if self._user_data is not None:
21 return self._user_data[name] 20 try:
21 return self._user_data[name]
22 except KeyError:
23 pass
22 raise AttributeError() 24 raise AttributeError()
23 25
24 def __getitem__(self, name): 26 def __getitem__(self, name):
25 if self._user_data is not None: 27 if self._user_data is not None:
26 return self._user_data[name] 28 return self._user_data[name]
168 170
169 posts_by_tax_value = {} 171 posts_by_tax_value = {}
170 for fac in self._source.getPageFactories(): 172 for fac in self._source.getPageFactories():
171 post = fac.buildPage() 173 post = fac.buildPage()
172 tax_values = post.config.get(tax_name) 174 tax_values = post.config.get(tax_name)
175 if tax_values is None:
176 continue
173 if not isinstance(tax_values, list): 177 if not isinstance(tax_values, list):
174 tax_values = [tax_values] 178 tax_values = [tax_values]
175 for val in tax_values: 179 for val in tax_values:
176 posts_by_tax_value.setdefault(val, []) 180 posts_by_tax_value.setdefault(val, [])
177 posts_by_tax_value[val].append(post) 181 posts_by_tax_value[val].append(post)