Mercurial > piecrust2
comparison 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 |
comparison
equal
deleted
inserted
replaced
813:c3cb2f9df882 | 814:aca04e175488 |
---|---|
122 page_ref = config.get('page') | 122 page_ref = config.get('page') |
123 if page_ref is None: | 123 if page_ref is None: |
124 raise ConfigurationError( | 124 raise ConfigurationError( |
125 "Generator '%s' requires a listing page ref." % name) | 125 "Generator '%s' requires a listing page ref." % name) |
126 self.page_ref = PageRef(app, page_ref) | 126 self.page_ref = PageRef(app, page_ref) |
127 self.data_endpoint = config.get('data_endpoint') | |
128 self.data_type = config.get('data_type') | |
129 | |
130 if self.data_endpoint and not self.data_type: | |
131 raise ConfigurationError( | |
132 "Generator '%s' requires a data type because it has a data endpoint." % name) | |
133 | |
134 self._provider_type = None | |
127 | 135 |
128 @cached_property | 136 @cached_property |
129 def source(self): | 137 def source(self): |
130 for src in self.app.sources: | 138 for src in self.app.sources: |
131 if src.name == self.source_name: | 139 if src.name == self.source_name: |
144 raise NotImplementedError() | 152 raise NotImplementedError() |
145 | 153 |
146 def onRouteFunctionUsed(self, route, route_metadata): | 154 def onRouteFunctionUsed(self, route, route_metadata): |
147 pass | 155 pass |
148 | 156 |
157 def buildDataProvider(self, page, override): | |
158 if not self._provider_type: | |
159 self._provider_type = self.app.getDataProviderClass(self.data_type) | |
160 return self._provider_type(self, page, override) |