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