aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuri Prezument2013-01-03 01:11:16 -0800
committerYuri Prezument2013-01-03 01:11:16 -0800
commited9f20823b699fe02a5a806efc37f5393a8371d5 (patch)
treed00b601f9aa2b848796d930f74949c55bbd8a392
parent6da9cd5429b9f480a65d27b93c2938b927f72a5b (diff)
parent097f4c6962330c0fd550a9c7ada8344472e0a443 (diff)
downloaddjango-rest-framework-ed9f20823b699fe02a5a806efc37f5393a8371d5.tar.bz2
Merge pull request #545 from yprez/filefield-no-files_issue542
FileField validation with files=None
-rw-r--r--docs/topics/release-notes.md1
-rw-r--r--rest_framework/fields.py1
-rw-r--r--rest_framework/tests/files.py14
3 files changed, 15 insertions, 1 deletions
diff --git a/docs/topics/release-notes.md b/docs/topics/release-notes.md
index e4bd1217..0e206809 100644
--- a/docs/topics/release-notes.md
+++ b/docs/topics/release-notes.md
@@ -21,6 +21,7 @@ Major version numbers (x.0.0) are reserved for project milestones. No major poi
* Added `PATCH` support.
* Added `RetrieveUpdateAPIView`.
* Relation changes are now persisted in `save` instead of in `.restore_object`.
+* Bugfix: Fix issue with FileField validation with files=None.
### 2.1.14
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index d8b82e5f..a022fe09 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -181,6 +181,7 @@ class WritableField(Field):
try:
if self._use_files:
+ files = files or {}
native = files[field_name]
else:
native = data[field_name]
diff --git a/rest_framework/tests/files.py b/rest_framework/tests/files.py
index 5dd57b7c..446e23c0 100644
--- a/rest_framework/tests/files.py
+++ b/rest_framework/tests/files.py
@@ -25,7 +25,6 @@ class UploadedFileSerializer(serializers.Serializer):
class FileSerializerTests(TestCase):
-
def test_create(self):
now = datetime.datetime.now()
file = StringIO.StringIO('stuff')
@@ -37,3 +36,16 @@ class FileSerializerTests(TestCase):
self.assertEquals(serializer.object.created, uploaded_file.created)
self.assertEquals(serializer.object.file, uploaded_file.file)
self.assertFalse(serializer.object is uploaded_file)
+
+ def test_creation_failure(self):
+ """
+ Passing files=None should result in an ValidationError
+
+ Regression test for:
+ https://github.com/tomchristie/django-rest-framework/issues/542
+ """
+ now = datetime.datetime.now()
+
+ serializer = UploadedFileSerializer(data={'created': now})
+ self.assertFalse(serializer.is_valid())
+ self.assertIn('file', serializer.errors)