Mercurial > hg > decoupage
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: |