Browse Source

Merge pull request #2450 from Caratpine/master

Blueprint view function name should not contain dots
pull/2490/head
David Lord 7 years ago committed by GitHub
parent
commit
8020d5eac9
  1. 2
      CHANGES
  2. 2
      flask/blueprints.py
  3. 9
      tests/test_blueprints.py

2
CHANGES

@ -112,6 +112,7 @@ Major release, unreleased
``app.debug`` each time. Only one format is used, not different ones ``app.debug`` each time. Only one format is used, not different ones
depending on ``app.debug``. No handlers are removed, and a handler is only depending on ``app.debug``. No handlers are removed, and a handler is only
added if no handlers are already configured. (`#2436`_) added if no handlers are already configured. (`#2436`_)
- Blueprint view function name may not contain dots. (`#2450`_)
.. _#1421: https://github.com/pallets/flask/issues/1421 .. _#1421: https://github.com/pallets/flask/issues/1421
.. _#1489: https://github.com/pallets/flask/pull/1489 .. _#1489: https://github.com/pallets/flask/pull/1489
@ -144,6 +145,7 @@ Major release, unreleased
.. _#2416: https://github.com/pallets/flask/pull/2416 .. _#2416: https://github.com/pallets/flask/pull/2416
.. _#2430: https://github.com/pallets/flask/pull/2430 .. _#2430: https://github.com/pallets/flask/pull/2430
.. _#2436: https://github.com/pallets/flask/pull/2436 .. _#2436: https://github.com/pallets/flask/pull/2436
.. _#2450: https://github.com/pallets/flask/pull/2450
Version 0.12.2 Version 0.12.2
-------------- --------------

2
flask/blueprints.py

@ -198,6 +198,8 @@ class Blueprint(_PackageBoundObject):
""" """
if endpoint: if endpoint:
assert '.' not in endpoint, "Blueprint endpoints should not contain dots" assert '.' not in endpoint, "Blueprint endpoints should not contain dots"
if view_func:
assert '.' not in view_func.__name__, "Blueprint view function name should not contain dots"
self.record(lambda s: self.record(lambda s:
s.add_url_rule(rule, endpoint, view_func, **options)) s.add_url_rule(rule, endpoint, view_func, **options))

9
tests/test_blueprints.py

@ -360,6 +360,15 @@ def test_route_decorator_custom_endpoint_with_dots(app, client):
lambda: None lambda: None
) )
foo_foo_foo.__name__ = 'bar.123'
pytest.raises(
AssertionError,
lambda: bp.add_url_rule(
'/bar/123', view_func=foo_foo_foo
)
)
app.register_blueprint(bp, url_prefix='/py') app.register_blueprint(bp, url_prefix='/py')
assert client.get('/py/foo').data == b'bp.foo' assert client.get('/py/foo').data == b'bp.foo'

Loading…
Cancel
Save