diff foodtruck/configuration.py @ 610:efc1dc916e7c

admin: Configuration changes. * Move publish targets to site configuration. * Add direct accessor for the current site.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 28 Jan 2016 22:17:58 -0800
parents effbc78b5528
children
line wrap: on
line diff
--- a/foodtruck/configuration.py	Thu Jan 28 22:16:47 2016 -0800
+++ b/foodtruck/configuration.py	Thu Jan 28 22:17:58 2016 -0800
@@ -10,10 +10,10 @@
 logger = logging.getLogger(__name__)
 
 
-def get_foodtruck_config(dirname=None):
+def get_foodtruck_config(dirname=None, fallback_config=None):
     dirname = dirname or os.getcwd()
     cfg_path = os.path.join(dirname, 'foodtruck.yml')
-    return FoodTruckConfiguration(cfg_path)
+    return FoodTruckConfiguration(cfg_path, fallback_config)
 
 
 class FoodTruckConfigNotFoundError(Exception):
@@ -21,9 +21,10 @@
 
 
 class FoodTruckConfiguration(Configuration):
-    def __init__(self, cfg_path):
+    def __init__(self, cfg_path, fallback_config=None):
         super(FoodTruckConfiguration, self).__init__()
         self.cfg_path = cfg_path
+        self.fallback_config = fallback_config
 
     def _load(self):
         try:
@@ -34,7 +35,12 @@
 
             self._values = self._validateAll(values)
         except OSError:
-            raise FoodTruckConfigNotFoundError()
+            if self.fallback_config is None:
+                raise FoodTruckConfigNotFoundError()
+
+            logger.debug("No FoodTruck configuration found, using fallback "
+                         "configuration.")
+            self._values = copy.deepcopy(self.fallback_config)
         except Exception as ex:
             raise ConfigurationError(
                     "Error loading configuration from: %s" %