Mercurial > piecrust2
diff piecrust/dataproviders/base.py @ 853:f070a4fc033c
core: Continue PieCrust3 refactor, simplify pages.
The asset pipeline is still the only function pipeline at this point.
* No more `QualifiedPage`, and several other pieces of code deleted.
* Data providers are simpler and more focused. For instance, the page iterator
doesn't try to support other types of items.
* Route parameters are proper known source metadata to remove the confusion
between the two.
* Make the baker and pipeline more correctly manage records and record
histories.
* Add support for record collapsing and deleting stale outputs in the asset
pipeline.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 21 May 2017 00:06:59 -0700 |
parents | |
children | 08e02c2a2a1a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/piecrust/dataproviders/base.py Sun May 21 00:06:59 2017 -0700 @@ -0,0 +1,31 @@ +from piecrust.configuration import ConfigurationError + + +class UnsupportedWrappedDataProviderError(Exception): + pass + + +class DataProvider: + """ The base class for a data provider. + """ + PROVIDER_NAME = None + + debug_render_dynamic = [] + debug_render_invoke_dynamic = [] + + def __init__(self, source): + self._source = source + + def _wrapDataProvider(self, provider): + raise UnsupportedWrappedDataProviderError() + + +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) +