forked from orbit-oss/flask
Started working on config support
This commit is contained in:
parent
e432d833b5
commit
68278fd78e
1 changed files with 39 additions and 11 deletions
50
flask.py
50
flask.py
|
|
@ -615,6 +615,21 @@ class Module(_PackageBoundObject):
|
|||
self._register_events.append(func)
|
||||
|
||||
|
||||
class ConfigAttribute(object):
|
||||
"""Makes an attribute forward to the config"""
|
||||
|
||||
def __init__(self, name):
|
||||
self.__name__ = name
|
||||
|
||||
def __get__(self, obj, type=None):
|
||||
if obj is None:
|
||||
return self
|
||||
return obj.config[self.__name__]
|
||||
|
||||
def __set__(self, obj, value):
|
||||
obj.config[self.__name__] = value
|
||||
|
||||
|
||||
class Flask(_PackageBoundObject):
|
||||
"""The flask object implements a WSGI application and acts as the central
|
||||
object. It is passed the name of the module or package of the
|
||||
|
|
@ -648,25 +663,31 @@ class Flask(_PackageBoundObject):
|
|||
#: and the development server will no longer serve any static files.
|
||||
static_path = '/static'
|
||||
|
||||
#: the debug flag. Set this to `True` to enable debugging of the
|
||||
#: application. In debug mode the debugger will kick in when an unhandled
|
||||
#: exception ocurrs and the integrated server will automatically reload
|
||||
#: the application if changes in the code are detected.
|
||||
debug = ConfigAttribute('debug')
|
||||
|
||||
#: if a secret key is set, cryptographic components can use this to
|
||||
#: sign cookies and other things. Set this to a complex random value
|
||||
#: when you want to use the secure cookie for instance.
|
||||
secret_key = None
|
||||
secret_key = ConfigAttribute('secret_key')
|
||||
|
||||
#: The secure cookie uses this for the name of the session cookie
|
||||
session_cookie_name = 'session'
|
||||
session_cookie_name = ConfigAttribute('session.cookie_name')
|
||||
|
||||
#: A :class:`~datetime.timedelta` which is used to set the expiration
|
||||
#: date of a permanent session. The default is 31 days which makes a
|
||||
#: permanent session survive for roughly one month.
|
||||
permanent_session_lifetime = timedelta(days=31)
|
||||
permanent_session_lifetime = ConfigAttribute('session.permanent_lifetime')
|
||||
|
||||
#: Enable this if you want to use the X-Sendfile feature. Keep in
|
||||
#: mind that the server has to support this. This only affects files
|
||||
#: sent with the :func:`send_file` method.
|
||||
#:
|
||||
#: .. versionadded:: 0.2
|
||||
use_x_sendfile = False
|
||||
use_x_sendfile = ConfigAttribute('use_x_sendfile')
|
||||
|
||||
#: the logging format used for the debug logger. This is only used when
|
||||
#: the application is in debug mode, otherwise the attached logging
|
||||
|
|
@ -686,15 +707,22 @@ class Flask(_PackageBoundObject):
|
|||
extensions=['jinja2.ext.autoescape', 'jinja2.ext.with_']
|
||||
)
|
||||
|
||||
def __init__(self, import_name):
|
||||
#: default configuration parameters
|
||||
default_config = ImmutableDict({
|
||||
'debug': False,
|
||||
'secret_key': None,
|
||||
'session.cookie_name': 'session',
|
||||
'session.permanent_lifetime': timedelta(days=31),
|
||||
'use_x_sendfile': False
|
||||
})
|
||||
|
||||
def __init__(self, import_name, config=None):
|
||||
_PackageBoundObject.__init__(self, import_name)
|
||||
|
||||
#: the debug flag. Set this to `True` to enable debugging of
|
||||
#: the application. In debug mode the debugger will kick in
|
||||
#: when an unhandled exception ocurrs and the integrated server
|
||||
#: will automatically reload the application if changes in the
|
||||
#: code are detected.
|
||||
self.debug = False
|
||||
#: the configuration dictionary
|
||||
self.config = self.default_config.copy()
|
||||
if config:
|
||||
self.config.update(config)
|
||||
|
||||
#: a dictionary of all view functions registered. The keys will
|
||||
#: be function names which are also used to generate URLs and
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue