Subclass Django's RequestFactory to provide PATCH support

This commit is contained in:
Andrew Hankinson 2012-12-20 00:27:29 -05:00
parent 18338a37d3
commit 2b5deefe56

View File

@ -0,0 +1,27 @@
from django.test.client import RequestFactory, FakePayload
from django.test.client import MULTIPART_CONTENT
from urlparse import urlparse
class DRFRequestFactory(RequestFactory):
def __init__(self, **defaults):
super(DRFRequestFactory, self).__init__(**defaults)
def patch(self, path, data={}, content_type=MULTIPART_CONTENT,
**extra):
"Construct a PATCH request."
patch_data = self._encode_data(data, content_type)
parsed = urlparse(path)
r = {
'CONTENT_LENGTH': len(patch_data),
'CONTENT_TYPE': content_type,
'PATH_INFO': self._get_path(parsed),
'QUERY_STRING': parsed[4],
'REQUEST_METHOD': 'PATCH',
'wsgi.input': FakePayload(patch_data),
}
r.update(extra)
return self.request(**r)