diff piecrust/app.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 fd694f1297c7
children 69d16e1afb95
line wrap: on
line diff
--- a/piecrust/app.py	Mon Jan 02 16:30:57 2017 -0500
+++ b/piecrust/app.py	Wed Dec 28 01:27:02 2016 -0500
@@ -200,6 +200,11 @@
             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:
@@ -235,6 +240,14 @@
             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)