Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Flask no longer internally depends on rules being added through the a…

…dd_url_rule function
  • Loading branch information...
commit 99be2ec022e2ceb1c21527c8278a7179630430d5 1 parent 07688d7
@mitsuhiko authored
Showing with 23 additions and 1 deletion.
  1. +3 −0  CHANGES
  2. +2 −1  flask/app.py
  3. +18 −0 tests/flask_tests.py
View
3  CHANGES
@@ -27,6 +27,9 @@ Release date to be announced, codename to be selected
used to flip the setting of exception propagation which previously
was linked to `DEBUG` alone and is now linked to either `DEBUG` or
`TESTING`.
+- Flask no longer internally depends on rules being added through the
+ `add_url_rule` function and can now also accept regular werkzeug
+ rules added to the url map.
Version 0.6.1
-------------
View
3  flask/app.py
@@ -730,7 +730,8 @@ def dispatch_request(self):
rule = req.url_rule
# if we provide automatic options for this URL and the
# request came with the OPTIONS method, reply automatically
- if rule.provide_automatic_options and req.method == 'OPTIONS':
+ if getattr(rule, 'provide_automatic_options', False) \
+ and req.method == 'OPTIONS':
return self.make_default_options_response()
# otherwise dispatch to the handler for that endpoint
return self.view_functions[rule.endpoint](**req.view_args)
View
18 tests/flask_tests.py
@@ -206,6 +206,24 @@ def more():
assert rv.status_code == 405
assert sorted(rv.allow) == ['GET', 'HEAD', 'OPTIONS', 'POST']
+ def test_werkzeug_routing(self):
+ from werkzeug.routing import Submount, Rule
+ app = flask.Flask(__name__)
+ app.url_map.add(Submount('/foo', [
+ Rule('/bar', endpoint='bar'),
+ Rule('/', endpoint='index')
+ ]))
+ def bar():
+ return 'bar'
+ def index():
+ return 'index'
+ app.view_functions['bar'] = bar
+ app.view_functions['index'] = index
+
+ c = app.test_client()
+ assert c.get('/foo/').data == 'index'
+ assert c.get('/foo/bar').data == 'bar'
+
def test_session(self):
app = flask.Flask(__name__)
app.secret_key = 'testkey'
Please sign in to comment.
Something went wrong with that request. Please try again.