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)
+