diff options
| author | Yuri Prezument | 2013-01-03 01:11:16 -0800 | 
|---|---|---|
| committer | Yuri Prezument | 2013-01-03 01:11:16 -0800 | 
| commit | ed9f20823b699fe02a5a806efc37f5393a8371d5 (patch) | |
| tree | d00b601f9aa2b848796d930f74949c55bbd8a392 | |
| parent | 6da9cd5429b9f480a65d27b93c2938b927f72a5b (diff) | |
| parent | 097f4c6962330c0fd550a9c7ada8344472e0a443 (diff) | |
| download | django-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.md | 1 | ||||
| -rw-r--r-- | rest_framework/fields.py | 1 | ||||
| -rw-r--r-- | rest_framework/tests/files.py | 14 | 
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) | 
