diff --git a/flask/config.py b/flask/config.py index bb32f7a7b6..6d7e868318 100644 --- a/flask/config.py +++ b/flask/config.py @@ -213,7 +213,7 @@ def from_mapping(self, *mapping, **kwargs): self[key] = value return True - def get_namespace(self, namespace, lowercase=True): + def get_namespace(self, namespace, lowercase=True, trim_namespace=True): """Returns a dictionary containing a subset of configuration options that match the specified namespace/prefix. Example usage:: @@ -236,6 +236,8 @@ def get_namespace(self, namespace, lowercase=True): :param namespace: a configuration namespace :param lowercase: a flag indicating if the keys of the resulting dictionary should be lowercase + :param trim_namespace: a flag indicating if the keys of the resulting + dictionary should not include the namespace .. versionadded:: 1.0 """ @@ -243,7 +245,10 @@ def get_namespace(self, namespace, lowercase=True): for k, v in iteritems(self): if not k.startswith(namespace): continue - key = k[len(namespace):] + if trim_namespace: + key = k[len(namespace):] + else: + key = k if lowercase: key = key.lower() rv[key] = v diff --git a/tests/test_config.py b/tests/test_config.py index 7487cb1d78..edfe43ccaf 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -182,3 +182,11 @@ def test_get_namespace(): assert 2 == len(bar_options) assert 'bar stuff 1' == bar_options['STUFF_1'] assert 'bar stuff 2' == bar_options['STUFF_2'] + foo_options = app.config.get_namespace('FOO_', trim_namespace=False) + assert 2 == len(foo_options) + assert 'foo option 1' == foo_options['foo_option_1'] + assert 'foo option 2' == foo_options['foo_option_2'] + bar_options = app.config.get_namespace('BAR_', lowercase=False, trim_namespace=False) + assert 2 == len(bar_options) + assert 'bar stuff 1' == bar_options['BAR_STUFF_1'] + assert 'bar stuff 2' == bar_options['BAR_STUFF_2']