forked from orbit-oss/flask
Add Config.from_mapping
This commit is contained in:
parent
02f0c755a3
commit
aa40b1731e
3 changed files with 51 additions and 0 deletions
1
CHANGES
1
CHANGES
|
|
@ -36,6 +36,7 @@ Version 1.0
|
||||||
for an extension author to create exceptions that will by default
|
for an extension author to create exceptions that will by default
|
||||||
result in the HTTP error of their choosing, but may be caught with
|
result in the HTTP error of their choosing, but may be caught with
|
||||||
a custom error handler if desired.
|
a custom error handler if desired.
|
||||||
|
- Added :meth:`flask.Config.from_mapping`.
|
||||||
|
|
||||||
Version 0.10.2
|
Version 0.10.2
|
||||||
--------------
|
--------------
|
||||||
|
|
|
||||||
|
|
@ -193,6 +193,28 @@ class Config(dict):
|
||||||
self[key] = obj[key]
|
self[key] = obj[key]
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def from_mapping(self, *mapping, **kwargs):
|
||||||
|
"""Updates the config like :meth:`update` ignoring items with non-upper
|
||||||
|
keys.
|
||||||
|
|
||||||
|
.. versionadded:: 1.0
|
||||||
|
"""
|
||||||
|
mappings = []
|
||||||
|
if len(mapping) == 1:
|
||||||
|
if hasattr(mapping[0], 'items'):
|
||||||
|
mappings.append(mapping[0].items())
|
||||||
|
else:
|
||||||
|
mappings.append(mapping[0])
|
||||||
|
elif len(mapping) > 1:
|
||||||
|
raise TypeError(
|
||||||
|
'expected at most 1 positional argument, got %d' % len(mapping)
|
||||||
|
)
|
||||||
|
mappings.append(kwargs.items())
|
||||||
|
for mapping in mappings:
|
||||||
|
for (key, value) in mapping:
|
||||||
|
if key.isupper():
|
||||||
|
self[key] = value
|
||||||
|
|
||||||
def get_namespace(self, namespace, lowercase=True):
|
def get_namespace(self, namespace, lowercase=True):
|
||||||
"""Returns a dictionary containing a subset of configuration options
|
"""Returns a dictionary containing a subset of configuration options
|
||||||
that match the specified namespace/prefix. Example usage::
|
that match the specified namespace/prefix. Example usage::
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,34 @@ class ConfigTestCase(FlaskTestCase):
|
||||||
app.config.from_json(os.path.join(current_dir, 'static', 'config.json'))
|
app.config.from_json(os.path.join(current_dir, 'static', 'config.json'))
|
||||||
self.common_object_test(app)
|
self.common_object_test(app)
|
||||||
|
|
||||||
|
def test_config_from_mapping(self):
|
||||||
|
app = flask.Flask(__name__)
|
||||||
|
app.config.from_mapping({
|
||||||
|
'SECRET_KEY': 'devkey',
|
||||||
|
'TEST_KEY': 'foo'
|
||||||
|
})
|
||||||
|
self.common_object_test(app)
|
||||||
|
|
||||||
|
app = flask.Flask(__name__)
|
||||||
|
app.config.from_mapping([
|
||||||
|
('SECRET_KEY', 'devkey'),
|
||||||
|
('TEST_KEY', 'foo')
|
||||||
|
])
|
||||||
|
self.common_object_test(app)
|
||||||
|
|
||||||
|
app = flask.Flask(__name__)
|
||||||
|
app.config.from_mapping(
|
||||||
|
SECRET_KEY='devkey',
|
||||||
|
TEST_KEY='foo'
|
||||||
|
)
|
||||||
|
self.common_object_test(app)
|
||||||
|
|
||||||
|
app = flask.Flask(__name__)
|
||||||
|
with self.assert_raises(TypeError):
|
||||||
|
app.config.from_mapping(
|
||||||
|
{}, {}
|
||||||
|
)
|
||||||
|
|
||||||
def test_config_from_class(self):
|
def test_config_from_class(self):
|
||||||
class Base(object):
|
class Base(object):
|
||||||
TEST_KEY = 'foo'
|
TEST_KEY = 'foo'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue