Mercurial > piecrust2
changeset 815:69d16e1afb95
internal: Keep things out of the `PieCrust` class, and other clean-ups.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 11 Jan 2017 09:01:01 -0800 |
parents | aca04e175488 |
children | d9b1e5ad869f |
files | piecrust/app.py piecrust/data/provider.py piecrust/generation/base.py piecrust/sources/base.py |
diffstat | 4 files changed, 21 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/app.py Wed Dec 28 01:27:02 2016 -0500 +++ b/piecrust/app.py Wed Jan 11 09:01:01 2017 -0800 @@ -200,11 +200,6 @@ tgts.append(tgt) return tgts - @cached_property - def dataProviderClasses(self): - return self.plugin_loader.getDataProviders() - - def getSource(self, source_name): for source in self.sources: if source.name == source_name: @@ -240,14 +235,6 @@ if pub.target == target_name: return pub return None - - def getDataProviderClass(cls, provider_type): - for prov in cls.dataProviderClasses: - if prov.PROVIDER_NAME == provider_type: - return prov - raise ConfigurationError( - "Unknown data provider type: %s" % provider_type) - def _get_dir(self, default_rel_dir): abs_dir = os.path.join(self.root_dir, default_rel_dir)
--- a/piecrust/data/provider.py Wed Dec 28 01:27:02 2016 -0500 +++ b/piecrust/data/provider.py Wed Jan 11 09:01:01 2017 -0800 @@ -1,10 +1,21 @@ import time import collections.abc +from piecrust.configuration import ConfigurationError from piecrust.data.iterators import PageIterator from piecrust.generation.taxonomy import Taxonomy from piecrust.sources.array import ArraySource +def get_data_provider_class(app, provider_type): + if not provider_type: + raise Exception("No data provider type specified.") + for prov in app.plugin_loader.getDataProviders(): + if prov.PROVIDER_NAME == provider_type: + return prov + raise ConfigurationError( + "Unknown data provider type: %s" % provider_type) + + class DataProvider(object): debug_render_dynamic = [] debug_render_invoke_dynamic = []
--- a/piecrust/generation/base.py Wed Dec 28 01:27:02 2016 -0500 +++ b/piecrust/generation/base.py Wed Jan 11 09:01:01 2017 -0800 @@ -124,13 +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) - + "Generator '%s' requires a data type because it has " + "a data endpoint." % name) + self._provider_type = None @cached_property @@ -156,5 +157,7 @@ def buildDataProvider(self, page, override): if not self._provider_type: - self._provider_type = self.app.getDataProviderClass(self.data_type) + from piecrust.data.provider import get_data_provider_class + self._provider_type = get_data_provider_class(self.app, + self.data_type) return self._provider_type(self, page, override)
--- a/piecrust/sources/base.py Wed Dec 28 01:27:02 2016 -0500 +++ b/piecrust/sources/base.py Wed Jan 11 09:01:01 2017 -0800 @@ -1,7 +1,6 @@ import copy import logging from werkzeug.utils import cached_property -from piecrust.configuration import ConfigurationError from piecrust.page import Page @@ -126,6 +125,7 @@ def buildDataProvider(self, page, override): if not self._provider_type: - self._provider_type = self.app.getDataProviderClass(self.data_type) + from piecrust.data.provider import get_data_provider_class + self._provider_type = get_data_provider_class(self.app, + self.data_type) return self._provider_type(self, page, override) -