diff decoupage/web.py @ 84:95820b36d7e3

cli client
author Jeff Hammel <jhammel@mozilla.com>
date Sat, 28 Dec 2013 18:12:16 -0800
parents 8596a1d97740
children 3262010f7f79
line wrap: on
line diff
--- a/decoupage/web.py	Sun Dec 15 12:38:24 2013 -0800
+++ b/decoupage/web.py	Sat Dec 28 18:12:16 2013 -0800
@@ -30,13 +30,15 @@
 
 transformers = transformers()
 
+string = (str, unicode)
+
 class Decoupage(object):
 
     ### class level variables
-    defaults = { 'auto_reload': 'False',
+    defaults = { 'auto_reload': False,
                  'configuration': None,
                  'directory': None, # directory to serve
-                 'cascade': 'True', # whether to cascade configuration
+                 'cascade': True, # whether to cascade configuration
                  'template': 'index.html', # XXX see below
                  'template_directories': '', # list of directories to look for templates
                  'charset': 'utf-8', # content encoding for index.html files; -> `Content-Type: text/html; charset=ISO-8859-1`
@@ -45,13 +47,21 @@
     def __init__(self, **kw):
 
         # set defaults from app configuration
-        for key in self.defaults:
-            setattr(self, key, kw.get(key, self.defaults[key]))
+        for key, default_value in self.defaults.items():
+
+            value = kw.get(key, default_value)
+
+            # handle non-string bools
+            if isinstance(default_value, bool) and isinstance(value, string):
+                value = {'true': True,
+                         'false': False}[value.lower()]
+                # TODO: error handling for bad strings
+
+            setattr(self, key, value)
+
 
         # configure defaults
         assert self.directory, "Decoupage: directory not specified"
-        self.auto_reload = self.auto_reload.lower() == 'true'
-        self.cascade = self.cascade.lower() == 'true'
         self.directory = self.directory.rstrip(os.path.sep)
         assert os.path.isdir(self.directory), "'%s' is not a directory" % self.directory
         self.template_directories = self.template_directories.split() # no spaces in directory names, for now