Mercurial > piecrust2
comparison piecrust/app.py @ 814:aca04e175488
data: Allow page generators to have an associated data provider
author | Ben Artin <ben@artins.org> |
---|---|
date | Wed, 28 Dec 2016 01:27:02 -0500 |
parents | fd694f1297c7 |
children | 69d16e1afb95 |
comparison
equal
deleted
inserted
replaced
813:c3cb2f9df882 | 814:aca04e175488 |
---|---|
198 raise ConfigurationError("No such publisher: %s" % pub_type) | 198 raise ConfigurationError("No such publisher: %s" % pub_type) |
199 tgt = cls(self, n, t) | 199 tgt = cls(self, n, t) |
200 tgts.append(tgt) | 200 tgts.append(tgt) |
201 return tgts | 201 return tgts |
202 | 202 |
203 @cached_property | |
204 def dataProviderClasses(self): | |
205 return self.plugin_loader.getDataProviders() | |
206 | |
207 | |
203 def getSource(self, source_name): | 208 def getSource(self, source_name): |
204 for source in self.sources: | 209 for source in self.sources: |
205 if source.name == source_name: | 210 if source.name == source_name: |
206 return source | 211 return source |
207 return None | 212 return None |
233 def getPublisher(self, target_name): | 238 def getPublisher(self, target_name): |
234 for pub in self.publishers: | 239 for pub in self.publishers: |
235 if pub.target == target_name: | 240 if pub.target == target_name: |
236 return pub | 241 return pub |
237 return None | 242 return None |
243 | |
244 def getDataProviderClass(cls, provider_type): | |
245 for prov in cls.dataProviderClasses: | |
246 if prov.PROVIDER_NAME == provider_type: | |
247 return prov | |
248 raise ConfigurationError( | |
249 "Unknown data provider type: %s" % provider_type) | |
250 | |
238 | 251 |
239 def _get_dir(self, default_rel_dir): | 252 def _get_dir(self, default_rel_dir): |
240 abs_dir = os.path.join(self.root_dir, default_rel_dir) | 253 abs_dir = os.path.join(self.root_dir, default_rel_dir) |
241 if os.path.isdir(abs_dir): | 254 if os.path.isdir(abs_dir): |
242 return abs_dir | 255 return abs_dir |