| ### |
| # |
| # Copyright Alan Kennedy. |
| # |
| # You may contact the copyright holder at this uri: |
| # |
| # http://www.xhaus.com/contact/modjy |
| # |
| # The licence under which this code is released is the Apache License v2.0. |
| # |
| # The terms and conditions of this license are listed in a file contained |
| # in the distribution that also contained this file, under the name |
| # LICENSE.txt. |
| # |
| # You may also read a copy of the license at the following web address. |
| # |
| # http://modjy.xhaus.com/LICENSE.txt |
| # |
| ### |
| |
| from UserDict import UserDict |
| |
| BOOLEAN = ('boolean', int) |
| INTEGER = ('integer', int) |
| FLOAT = ('float', float) |
| STRING = ('string', None) |
| |
| modjy_servlet_params = { |
| |
| 'multithread': (BOOLEAN, 1), |
| 'cache_callables': (BOOLEAN, 1), |
| 'reload_on_mod': (BOOLEAN, 0), |
| |
| 'app_import_name': (STRING, None), |
| |
| 'app_directory': (STRING, None), |
| 'app_filename': (STRING, 'application.py'), |
| 'app_callable_name': (STRING, 'handler'), |
| 'callable_query_name': (STRING, None), |
| |
| 'exc_handler': (STRING, 'standard'), |
| |
| 'log_level': (STRING, 'info'), |
| |
| 'packages': (STRING, None), |
| 'classdirs': (STRING, None), |
| 'extdirs': (STRING, None), |
| |
| 'initial_env': (STRING, None), |
| } |
| |
| class modjy_param_mgr(UserDict): |
| |
| def __init__(self, param_types): |
| UserDict.__init__(self) |
| self.param_types = param_types |
| for pname in self.param_types.keys(): |
| typ, default = self.param_types[pname] |
| self.__setitem__(pname, default) |
| |
| def __getitem__(self, name): |
| return self._get_defaulted_value(name) |
| |
| def __setitem__(self, name, value): |
| self.data[name] = self._convert_value(name, value) |
| |
| def _convert_value(self, name, value): |
| if self.param_types.has_key(name): |
| typ, default = self.param_types[name] |
| typ_str, typ_func = typ |
| if typ_func: |
| try: |
| return typ_func(value) |
| except ValueError: |
| raise BadParameter("Illegal value for %s parameter '%s': %s" % (typ_str, name, value) ) |
| return value |
| |
| def _get_defaulted_value(self, name): |
| if self.data.has_key(name): |
| return self.data[name] |
| if self.param_types.has_key(name): |
| typ, default = self.param_types[name] |
| return default |
| raise KeyError(name) |