Merge branch 'config-namespaces' of https://github.com/mattupstate/flask into config-namespaces

Conflicts:
	flask/config.py
This commit is contained in:
Daniel Neuhäuser 2014-03-13 20:20:22 +01:00
commit 0674ee875d
2 changed files with 49 additions and 0 deletions

View file

@ -193,5 +193,39 @@ class Config(dict):
self[key] = obj[key]
return True
def get_namespace(self, namespace, lowercase=True):
"""Returns a dictionary containing a subset of configuration options
that match the specified namespace/prefix. Example usage::
app.config['IMAGE_STORE_TYPE'] = 'fs'
app.config['IMAGE_STORE_PATH'] = '/var/app/images'
app.config['IMAGE_STORE_BASE_URL'] = 'http://img.website.com'
image_store_config = app.config.get_namespace('IMAGE_STORE_')
The resulting dictionary `image_store` would look like::
{
'type': 'fs',
'path': '/var/app/images',
'base_url': 'http://img.website.com'
}
This is often useful when configuration options map directly to
keyword arguments in functions or class constructors.
:param namespace: a configuration namespace
:param lowercase: a flag indicating if the keys of the resulting
dictionary should be lowercase
"""
rv = {}
for k, v in self.iteritems():
if not k.startswith(namespace):
continue
key = k[len(namespace):]
if lowercase:
key = key.lower()
rv[key] = v
return rv
def __repr__(self):
return '<%s %s>' % (self.__class__.__name__, dict.__repr__(self))