mirror of https://github.com/pallets/flask.git
Added required_methods
This commit is contained in:
parent
2053d04db0
commit
dbfd406a21
2
CHANGES
2
CHANGES
|
@ -68,6 +68,8 @@ Relase date to be decided, codename to be chosen.
|
||||||
longer arguments to the response object, they now have a defined meaning.
|
longer arguments to the response object, they now have a defined meaning.
|
||||||
- Added :attr:`flask.Flask.request_globals_class` to allow a specific class to
|
- Added :attr:`flask.Flask.request_globals_class` to allow a specific class to
|
||||||
be used on creation of the :data:`~flask.g` instance of each request.
|
be used on creation of the :data:`~flask.g` instance of each request.
|
||||||
|
- Added `required_methods` attribute to view functions to force-add methods
|
||||||
|
on registration.
|
||||||
|
|
||||||
Version 0.8.1
|
Version 0.8.1
|
||||||
-------------
|
-------------
|
||||||
|
|
|
@ -636,6 +636,10 @@ some defaults to :meth:`~flask.Flask.add_url_rule` or general behavior:
|
||||||
decorators that want to customize the `OPTIONS` response on a per-view
|
decorators that want to customize the `OPTIONS` response on a per-view
|
||||||
basis.
|
basis.
|
||||||
|
|
||||||
|
- `required_methods`: if this attribute is set, Flask will always add
|
||||||
|
these methods when registering a URL rule even if the methods were
|
||||||
|
explicitly overriden in the ``route()`` call.
|
||||||
|
|
||||||
Full example::
|
Full example::
|
||||||
|
|
||||||
def index():
|
def index():
|
||||||
|
|
|
@ -915,6 +915,10 @@ class Flask(_PackageBoundObject):
|
||||||
# a tuple of only `GET` as default.
|
# a tuple of only `GET` as default.
|
||||||
if methods is None:
|
if methods is None:
|
||||||
methods = getattr(view_func, 'methods', None) or ('GET',)
|
methods = getattr(view_func, 'methods', None) or ('GET',)
|
||||||
|
methods = set(methods)
|
||||||
|
|
||||||
|
# Methods that should always be added
|
||||||
|
required_methods = set(getattr(view_func, 'required_methods', ()))
|
||||||
|
|
||||||
# starting with Flask 0.8 the view_func object can disable and
|
# starting with Flask 0.8 the view_func object can disable and
|
||||||
# force-enable the automatic options handling.
|
# force-enable the automatic options handling.
|
||||||
|
@ -923,11 +927,14 @@ class Flask(_PackageBoundObject):
|
||||||
|
|
||||||
if provide_automatic_options is None:
|
if provide_automatic_options is None:
|
||||||
if 'OPTIONS' not in methods:
|
if 'OPTIONS' not in methods:
|
||||||
methods = tuple(methods) + ('OPTIONS',)
|
|
||||||
provide_automatic_options = True
|
provide_automatic_options = True
|
||||||
|
required_methods.add('OPTIONS')
|
||||||
else:
|
else:
|
||||||
provide_automatic_options = False
|
provide_automatic_options = False
|
||||||
|
|
||||||
|
# Add the required methods now.
|
||||||
|
methods |= required_methods
|
||||||
|
|
||||||
# due to a werkzeug bug we need to make sure that the defaults are
|
# due to a werkzeug bug we need to make sure that the defaults are
|
||||||
# None if they are an empty dictionary. This should not be necessary
|
# None if they are an empty dictionary. This should not be necessary
|
||||||
# with Werkzeug 0.7
|
# with Werkzeug 0.7
|
||||||
|
|
Loading…
Reference in New Issue