Mercurial > piecrust2
diff piecrust/generation/base.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 | 58ebf50235a5 |
children | 69d16e1afb95 |
line wrap: on
line diff
--- a/piecrust/generation/base.py Mon Jan 02 16:30:57 2017 -0500 +++ b/piecrust/generation/base.py Wed Dec 28 01:27:02 2016 -0500 @@ -124,6 +124,14 @@ raise ConfigurationError( "Generator '%s' requires a listing page ref." % name) self.page_ref = PageRef(app, page_ref) + self.data_endpoint = config.get('data_endpoint') + self.data_type = config.get('data_type') + + if self.data_endpoint and not self.data_type: + raise ConfigurationError( + "Generator '%s' requires a data type because it has a data endpoint." % name) + + self._provider_type = None @cached_property def source(self): @@ -146,3 +154,7 @@ def onRouteFunctionUsed(self, route, route_metadata): pass + def buildDataProvider(self, page, override): + if not self._provider_type: + self._provider_type = self.app.getDataProviderClass(self.data_type) + return self._provider_type(self, page, override)