benoitc / benoitc/dj-webmachine
KeyError in content_types_provided when using wm.route decorator
- Dominant language
- Python
- Stars
- 59
- Forks
- 9
- PR merge metrics
- No merged PRs in 30d
Description
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:
```Traceback (most recent call last):
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.
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.