Mercurial > piecrust2
comparison 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 |
comparison
equal
deleted
inserted
replaced
852:4850f8c21b6e | 853:f070a4fc033c |
---|---|
1 from piecrust.configuration import ConfigurationError | |
2 | |
3 | |
4 class UnsupportedWrappedDataProviderError(Exception): | |
5 pass | |
6 | |
7 | |
8 class DataProvider: | |
9 """ The base class for a data provider. | |
10 """ | |
11 PROVIDER_NAME = None | |
12 | |
13 debug_render_dynamic = [] | |
14 debug_render_invoke_dynamic = [] | |
15 | |
16 def __init__(self, source): | |
17 self._source = source | |
18 | |
19 def _wrapDataProvider(self, provider): | |
20 raise UnsupportedWrappedDataProviderError() | |
21 | |
22 | |
23 def get_data_provider_class(app, provider_type): | |
24 if not provider_type: | |
25 raise Exception("No data provider type specified.") | |
26 for prov in app.plugin_loader.getDataProviders(): | |
27 if prov.PROVIDER_NAME == provider_type: | |
28 return prov | |
29 raise ConfigurationError( | |
30 "Unknown data provider type: %s" % provider_type) | |
31 |