benoitc / benoitc/dj-webmachine

KeyError in content_types_provided when using wm.route decorator

Open
#9 0 comments 0 reactions 1 assignee Claimed by @benoitc View on GitHub
Bug
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.