2013-02-05 00:55:35 +04:00
|
|
|
from __future__ import unicode_literals
|
2013-02-15 13:33:36 +04:00
|
|
|
from django.test.client import FakePayload, Client as _Client, RequestFactory as _RequestFactory
|
2012-12-20 09:27:29 +04:00
|
|
|
from django.test.client import MULTIPART_CONTENT
|
2013-02-01 18:03:28 +04:00
|
|
|
from rest_framework.compat import urlparse
|
2012-12-20 09:27:29 +04:00
|
|
|
|
|
|
|
|
2013-02-15 13:33:36 +04:00
|
|
|
class RequestFactory(_RequestFactory):
|
2012-12-20 09:27:29 +04:00
|
|
|
|
|
|
|
def __init__(self, **defaults):
|
2012-12-30 21:57:43 +04:00
|
|
|
super(RequestFactory, self).__init__(**defaults)
|
2012-12-20 09:27:29 +04:00
|
|
|
|
|
|
|
def patch(self, path, data={}, content_type=MULTIPART_CONTENT,
|
|
|
|
**extra):
|
|
|
|
"Construct a PATCH request."
|
|
|
|
|
|
|
|
patch_data = self._encode_data(data, content_type)
|
|
|
|
|
2013-02-01 18:03:28 +04:00
|
|
|
parsed = urlparse.urlparse(path)
|
2012-12-20 09:27:29 +04:00
|
|
|
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)
|
2013-02-15 13:33:36 +04:00
|
|
|
|
|
|
|
|
|
|
|
class Client(_Client, RequestFactory):
|
|
|
|
def patch(self, path, data={}, content_type=MULTIPART_CONTENT,
|
|
|
|
follow=False, **extra):
|
|
|
|
"""
|
|
|
|
Send a resource to the server using PATCH.
|
|
|
|
"""
|
|
|
|
response = super(Client, self).patch(path, data=data, content_type=content_type, **extra)
|
|
|
|
if follow:
|
|
|
|
response = self._handle_redirects(response, **extra)
|
|
|
|
return response
|