mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-05-04 07:53:42 +03:00
compat: only add compat implementation of RequestFactory.generic() if not
provided by django
This commit is contained in:
parent
d86e494e86
commit
06c61fc511
|
@ -199,8 +199,6 @@ if 'patch' not in View.http_method_names:
|
||||||
View.http_method_names = View.http_method_names + ['patch']
|
View.http_method_names = View.http_method_names + ['patch']
|
||||||
|
|
||||||
|
|
||||||
# RequestFactory only provides `generic` from 1.5 onwards
|
|
||||||
from django.test.client import RequestFactory as DjangoRequestFactory
|
|
||||||
from django.test.client import FakePayload
|
from django.test.client import FakePayload
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -211,24 +209,30 @@ except ImportError:
|
||||||
from django.utils.encoding import smart_str as force_bytes_or_smart_bytes
|
from django.utils.encoding import smart_str as force_bytes_or_smart_bytes
|
||||||
|
|
||||||
|
|
||||||
class RequestFactory(DjangoRequestFactory):
|
# RequestFactory only provides `generic` from 1.5 onwards
|
||||||
def generic(self, method, path,
|
if django.VERSION < (1, 5):
|
||||||
data='', content_type='application/octet-stream', **extra):
|
from django.test.client import RequestFactory as DjangoRequestFactory
|
||||||
parsed = _urlparse(path)
|
|
||||||
data = force_bytes_or_smart_bytes(data, settings.DEFAULT_CHARSET)
|
class RequestFactory(DjangoRequestFactory):
|
||||||
r = {
|
def generic(self, method, path,
|
||||||
'PATH_INFO': self._get_path(parsed),
|
data='', content_type='application/octet-stream', **extra):
|
||||||
'QUERY_STRING': force_text(parsed[4]),
|
parsed = _urlparse(path)
|
||||||
'REQUEST_METHOD': six.text_type(method),
|
data = force_bytes_or_smart_bytes(data, settings.DEFAULT_CHARSET)
|
||||||
}
|
r = {
|
||||||
if data:
|
'PATH_INFO': self._get_path(parsed),
|
||||||
r.update({
|
'QUERY_STRING': force_text(parsed[4]),
|
||||||
'CONTENT_LENGTH': len(data),
|
'REQUEST_METHOD': six.text_type(method),
|
||||||
'CONTENT_TYPE': six.text_type(content_type),
|
}
|
||||||
'wsgi.input': FakePayload(data),
|
if data:
|
||||||
})
|
r.update({
|
||||||
r.update(extra)
|
'CONTENT_LENGTH': len(data),
|
||||||
return self.request(**r)
|
'CONTENT_TYPE': six.text_type(content_type),
|
||||||
|
'wsgi.input': FakePayload(data),
|
||||||
|
})
|
||||||
|
r.update(extra)
|
||||||
|
return self.request(**r)
|
||||||
|
else:
|
||||||
|
from django.test.client import RequestFactory
|
||||||
|
|
||||||
|
|
||||||
# Markdown is optional
|
# Markdown is optional
|
||||||
|
|
Loading…
Reference in New Issue
Block a user