comparison 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
comparison
equal deleted inserted replaced
83:78139c3cecfa 84:95820b36d7e3
28 from pkg_resources import resource_filename 28 from pkg_resources import resource_filename
29 from webob import Request, Response, exc 29 from webob import Request, Response, exc
30 30
31 transformers = transformers() 31 transformers = transformers()
32 32
33 string = (str, unicode)
34
33 class Decoupage(object): 35 class Decoupage(object):
34 36
35 ### class level variables 37 ### class level variables
36 defaults = { 'auto_reload': 'False', 38 defaults = { 'auto_reload': False,
37 'configuration': None, 39 'configuration': None,
38 'directory': None, # directory to serve 40 'directory': None, # directory to serve
39 'cascade': 'True', # whether to cascade configuration 41 'cascade': True, # whether to cascade configuration
40 'template': 'index.html', # XXX see below 42 'template': 'index.html', # XXX see below
41 'template_directories': '', # list of directories to look for templates 43 'template_directories': '', # list of directories to look for templates
42 'charset': 'utf-8', # content encoding for index.html files; -> `Content-Type: text/html; charset=ISO-8859-1` 44 'charset': 'utf-8', # content encoding for index.html files; -> `Content-Type: text/html; charset=ISO-8859-1`
43 } 45 }
44 46
45 def __init__(self, **kw): 47 def __init__(self, **kw):
46 48
47 # set defaults from app configuration 49 # set defaults from app configuration
48 for key in self.defaults: 50 for key, default_value in self.defaults.items():
49 setattr(self, key, kw.get(key, self.defaults[key])) 51
52 value = kw.get(key, default_value)
53
54 # handle non-string bools
55 if isinstance(default_value, bool) and isinstance(value, string):
56 value = {'true': True,
57 'false': False}[value.lower()]
58 # TODO: error handling for bad strings
59
60 setattr(self, key, value)
61
50 62
51 # configure defaults 63 # configure defaults
52 assert self.directory, "Decoupage: directory not specified" 64 assert self.directory, "Decoupage: directory not specified"
53 self.auto_reload = self.auto_reload.lower() == 'true'
54 self.cascade = self.cascade.lower() == 'true'
55 self.directory = self.directory.rstrip(os.path.sep) 65 self.directory = self.directory.rstrip(os.path.sep)
56 assert os.path.isdir(self.directory), "'%s' is not a directory" % self.directory 66 assert os.path.isdir(self.directory), "'%s' is not a directory" % self.directory
57 self.template_directories = self.template_directories.split() # no spaces in directory names, for now 67 self.template_directories = self.template_directories.split() # no spaces in directory names, for now
58 68
59 for directory in self.template_directories: 69 for directory in self.template_directories: