From 4eeb4342dd02827f52b1d8241374ef641530e362 Mon Sep 17 00:00:00 2001 From: Mihail Burduja Date: Mon, 28 Jul 2014 20:41:19 +0300 Subject: [PATCH 1/6] Added option to prepend MEDIA_ROOT to FileField fields. --- rest_framework/fields.py | 2 ++ rest_framework/settings.py | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 6caae9242..d45a74f7f 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -973,6 +973,8 @@ class FileField(WritableField): return data def to_native(self, value): + if api_settings.PREPEND_MEDIA_URL: + return api_settings.MEDIA_URL + value.name return value.name diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 38753c968..e524141e0 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -119,6 +119,10 @@ DEFAULTS = { # Pending deprecation 'FILTER_BACKEND': None, + + # Prepending MEDIA_URL to FileField + 'PREPEND_MEDIA_URL': False, + 'MEDIA_URL': '/', } From 5d96a393d802a9baed8595026d49f9a891202ab9 Mon Sep 17 00:00:00 2001 From: Mihail Burduja Date: Tue, 29 Jul 2014 23:04:07 +0300 Subject: [PATCH 2/6] Added test for backward compatibility --- rest_framework/tests/test_files.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/rest_framework/tests/test_files.py b/rest_framework/tests/test_files.py index 78f4cf425..ddc0ad133 100644 --- a/rest_framework/tests/test_files.py +++ b/rest_framework/tests/test_files.py @@ -93,3 +93,16 @@ class FileSerializerTests(TestCase): serializer = UploadedFileSerializer(files={'file': file}) self.assertFalse(serializer.is_valid()) + + def test_to_native_without_media_url(self): + """ + By default serializer should return the file name without MEDIA_URL. + """ + now = datetime.datetime.now() + file = BytesIO(six.b('stuff')) + file.name = 'stuff.txt' + file.size = len(file.getvalue()) + uploaded_file = UploadedFile(file=file, created=now) + + serializer = UploadedFileSerializer(files={'file': file}) + self.assertEqual(serializer.to_native(uploaded_file), uploaded_file.name) From aab58e60a5ea3fb5ec098b05aa0bf902548c60fb Mon Sep 17 00:00:00 2001 From: Mihail Burduja Date: Wed, 30 Jul 2014 08:18:28 +0300 Subject: [PATCH 3/6] Fixed build --- rest_framework/tests/test_files.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rest_framework/tests/test_files.py b/rest_framework/tests/test_files.py index ddc0ad133..1fcd9dd7d 100644 --- a/rest_framework/tests/test_files.py +++ b/rest_framework/tests/test_files.py @@ -102,7 +102,5 @@ class FileSerializerTests(TestCase): file = BytesIO(six.b('stuff')) file.name = 'stuff.txt' file.size = len(file.getvalue()) - uploaded_file = UploadedFile(file=file, created=now) - serializer = UploadedFileSerializer(files={'file': file}) - self.assertEqual(serializer.to_native(uploaded_file), uploaded_file.name) + self.assertEqual(serializer.to_native(file), file.name) From d761eb452ea936d4aa9ded4d7121aae0a86b8314 Mon Sep 17 00:00:00 2001 From: Mihail Burduja Date: Fri, 1 Aug 2014 12:47:32 +0300 Subject: [PATCH 4/6] Revert "Fixed build" This reverts commit aab58e60a5ea3fb5ec098b05aa0bf902548c60fb. --- rest_framework/tests/test_files.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rest_framework/tests/test_files.py b/rest_framework/tests/test_files.py index 1fcd9dd7d..ddc0ad133 100644 --- a/rest_framework/tests/test_files.py +++ b/rest_framework/tests/test_files.py @@ -102,5 +102,7 @@ class FileSerializerTests(TestCase): file = BytesIO(six.b('stuff')) file.name = 'stuff.txt' file.size = len(file.getvalue()) + uploaded_file = UploadedFile(file=file, created=now) - self.assertEqual(serializer.to_native(file), file.name) + serializer = UploadedFileSerializer(files={'file': file}) + self.assertEqual(serializer.to_native(uploaded_file), uploaded_file.name) From e01974ee07d0a2246656608e9671e5ee2b99e8dc Mon Sep 17 00:00:00 2001 From: Mihail Burduja Date: Fri, 1 Aug 2014 12:48:41 +0300 Subject: [PATCH 5/6] Revert "Added test for backward compatibility" This reverts commit 5d96a393d802a9baed8595026d49f9a891202ab9. --- rest_framework/tests/test_files.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/rest_framework/tests/test_files.py b/rest_framework/tests/test_files.py index ddc0ad133..78f4cf425 100644 --- a/rest_framework/tests/test_files.py +++ b/rest_framework/tests/test_files.py @@ -93,16 +93,3 @@ class FileSerializerTests(TestCase): serializer = UploadedFileSerializer(files={'file': file}) self.assertFalse(serializer.is_valid()) - - def test_to_native_without_media_url(self): - """ - By default serializer should return the file name without MEDIA_URL. - """ - now = datetime.datetime.now() - file = BytesIO(six.b('stuff')) - file.name = 'stuff.txt' - file.size = len(file.getvalue()) - uploaded_file = UploadedFile(file=file, created=now) - - serializer = UploadedFileSerializer(files={'file': file}) - self.assertEqual(serializer.to_native(uploaded_file), uploaded_file.name) From c57d80d2a0982653fa856a306ff2f6565dcdf00e Mon Sep 17 00:00:00 2001 From: Mihail Burduja Date: Tue, 19 Aug 2014 00:09:51 +0300 Subject: [PATCH 6/6] Removed MEDIA_URL from django-rest-framework settings. Using Django's MEDIA_URL --- rest_framework/fields.py | 2 +- rest_framework/settings.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index d45a74f7f..144cfb6df 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -974,7 +974,7 @@ class FileField(WritableField): def to_native(self, value): if api_settings.PREPEND_MEDIA_URL: - return api_settings.MEDIA_URL + value.name + return settings.MEDIA_URL + value.name return value.name diff --git a/rest_framework/settings.py b/rest_framework/settings.py index e524141e0..d47ec15dd 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -122,7 +122,6 @@ DEFAULTS = { # Prepending MEDIA_URL to FileField 'PREPEND_MEDIA_URL': False, - 'MEDIA_URL': '/', }