Armin Ronacher  committed dbfd406

Added required_methods

  • Participants
  • Parent commits 2053d04
  • Branches master

Comments (0)

Files changed (3)

   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
   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

File docs/api.rst

     decorators that want to customize the `OPTIONS` response on a per-view
+-   `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::
     def index():

File flask/

         # a tuple of only `GET` as default.
         if methods is None:
             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
         # force-enable the automatic options handling.
         if provide_automatic_options is None:
             if 'OPTIONS' not in methods:
-                methods = tuple(methods) + ('OPTIONS',)
                 provide_automatic_options = True
+                required_methods.add('OPTIONS')
                 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
         # None if they are an empty dictionary.  This should not be necessary
         # with Werkzeug 0.7