dj-webmachine icon indicating copy to clipboard operation
dj-webmachine copied to clipboard

KeyError in content_types_provided when using wm.route decorator

Open vicould opened this issue 14 years ago • 0 comments

When you use the decorator wm.route on a function to register a new route, the WM implementation of the content_types_provided method can generate a KeyError if the request method is not in the wm methods dictionary.

For example, using the helloworld2 example included in the project, if you send a POST request on the root url: curl -X POST http://localhost:8000/

a KeyError is raised:

File "/Users/Ludo/prog/django/core/handlers/base.py", line 111, in get_response
  response = callback(request, _callback_args, *_callback_kwargs)
File "/Users/Ludo/prog/django/webmachine/resource.py", line 646, in **call**
  return self._process(request, _args, *_kwargs)
File "/Users/Ludo/prog/django/webmachine/resource.py", line 605, in _process
  ctypes = [ct for (ct, func) in (self.content_types_provided(req, resp) or [])]
File "/Users/Ludo/prog/django/webmachine/route.py", line 208, in content_types_provided
  fun = self.methods[req.method]
KeyError: 'POST'

I am not sure about a fix, but either checking earlier in resource.Resource._process for not allowed method or directly in the content_types_provided should be fine.

vicould avatar May 03 '11 21:05 vicould