aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2014-01-31 03:45:04 -0800
committerTom Christie2014-01-31 03:45:04 -0800
commit8f921160e5a4b50f622449f368df41e5e36c0ebe (patch)
tree85dc04f87252313d7a484d92d174cf94684c2aed
parent18f26ff5cc193726956d97f1a7d5ced5e6c0f4ee (diff)
parent0043f30cab86f50b61ce265635d503c8212848c4 (diff)
downloaddjango-rest-framework-8f921160e5a4b50f622449f368df41e5e36c0ebe.tar.bz2
Merge pull request #1377 from Ian-Foote/force_bytes
Import force_bytes on django >= 1.5
-rw-r--r--rest_framework/compat.py2
-rw-r--r--rest_framework/renderers.py3
-rw-r--r--rest_framework/tests/test_testing.py9
3 files changed, 12 insertions, 2 deletions
diff --git a/rest_framework/compat.py b/rest_framework/compat.py
index b69749fe..d283e2f5 100644
--- a/rest_framework/compat.py
+++ b/rest_framework/compat.py
@@ -457,7 +457,7 @@ from django.test.client import RequestFactory as DjangoRequestFactory
from django.test.client import FakePayload
try:
# In 1.5 the test client uses force_bytes
- from django.utils.encoding import force_bytes_or_smart_bytes
+ from django.utils.encoding import force_bytes as force_bytes_or_smart_bytes
except ImportError:
# In 1.3 and 1.4 the test client just uses smart_str
from django.utils.encoding import smart_str as force_bytes_or_smart_bytes
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py
index 2fdd3337..e8afc26d 100644
--- a/rest_framework/renderers.py
+++ b/rest_framework/renderers.py
@@ -10,6 +10,7 @@ from __future__ import unicode_literals
import copy
import json
+import django
from django import forms
from django.core.exceptions import ImproperlyConfigured
from django.http.multipartparser import parse_header
@@ -597,7 +598,7 @@ class MultiPartRenderer(BaseRenderer):
media_type = 'multipart/form-data; boundary=BoUnDaRyStRiNg'
format = 'multipart'
charset = 'utf-8'
- BOUNDARY = 'BoUnDaRyStRiNg'
+ BOUNDARY = 'BoUnDaRyStRiNg' if django.VERSION >= (1, 5) else b'BoUnDaRyStRiNg'
def render(self, data, accepted_media_type=None, renderer_context=None):
return encode_multipart(self.BOUNDARY, data)
diff --git a/rest_framework/tests/test_testing.py b/rest_framework/tests/test_testing.py
index 48b8956b..71bd8b55 100644
--- a/rest_framework/tests/test_testing.py
+++ b/rest_framework/tests/test_testing.py
@@ -1,6 +1,8 @@
# -- coding: utf-8 --
from __future__ import unicode_literals
+from io import BytesIO
+
from django.contrib.auth.models import User
from django.test import TestCase
from rest_framework.compat import patterns, url
@@ -143,3 +145,10 @@ class TestAPIRequestFactory(TestCase):
force_authenticate(request, user=user)
response = view(request)
self.assertEqual(response.data['user'], 'example')
+
+ def test_upload_file(self):
+ # This is a 1x1 black png
+ simple_png = BytesIO(b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\x08\x06\x00\x00\x00\x1f\x15\xc4\x89\x00\x00\x00\rIDATx\x9cc````\x00\x00\x00\x05\x00\x01\xa5\xf6E@\x00\x00\x00\x00IEND\xaeB`\x82')
+ simple_png.name = 'test.png'
+ factory = APIRequestFactory()
+ factory.post('/', data={'image': simple_png})