Commit baf0e366 by Tom Christie

Merge pull request #302 from rdobson/restframework2

Make default field check safe for boolean values
parents cab4a2a5 38673c35
...@@ -393,7 +393,7 @@ class ModelSerializer(Serializer): ...@@ -393,7 +393,7 @@ class ModelSerializer(Serializer):
except KeyError: except KeyError:
ret = ModelField(model_field=model_field) ret = ModelField(model_field=model_field)
if model_field.default: if model_field.default is not None:
ret.required = False ret.required = False
return ret return ret
......
...@@ -91,3 +91,7 @@ class Comment(RESTFrameworkModel): ...@@ -91,3 +91,7 @@ class Comment(RESTFrameworkModel):
email = models.EmailField() email = models.EmailField()
content = models.CharField(max_length=200) content = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
class ActionItem(RESTFrameworkModel):
title = models.CharField(max_length=200)
done = models.BooleanField(default=False)
...@@ -28,6 +28,10 @@ class CommentSerializer(serializers.Serializer): ...@@ -28,6 +28,10 @@ class CommentSerializer(serializers.Serializer):
return instance return instance
class ActionItemSerializer(serializers.ModelSerializer):
class Meta:
model = ActionItem
class BasicTests(TestCase): class BasicTests(TestCase):
def setUp(self): def setUp(self):
self.comment = Comment( self.comment = Comment(
...@@ -81,7 +85,9 @@ class ValidationTests(TestCase): ...@@ -81,7 +85,9 @@ class ValidationTests(TestCase):
'email': 'tom@example.com', 'email': 'tom@example.com',
'content': 'x' * 1001, 'content': 'x' * 1001,
'created': datetime.datetime(2012, 1, 1) 'created': datetime.datetime(2012, 1, 1)
} }
self.actionitem = ActionItem('Some to do item',
)
def test_create(self): def test_create(self):
serializer = CommentSerializer(self.data) serializer = CommentSerializer(self.data)
...@@ -102,6 +108,17 @@ class ValidationTests(TestCase): ...@@ -102,6 +108,17 @@ class ValidationTests(TestCase):
self.assertEquals(serializer.is_valid(), False) self.assertEquals(serializer.is_valid(), False)
self.assertEquals(serializer.errors, {'email': [u'This field is required.']}) self.assertEquals(serializer.errors, {'email': [u'This field is required.']})
def test_missing_bool_with_default(self):
"""Make sure that a boolean value with a 'False' value is not
mistaken for not having a default."""
data = {
'title':'Some action item',
#No 'done' value.
}
serializer = ActionItemSerializer(data, instance=self.actionitem)
self.assertEquals(serializer.is_valid(), True)
self.assertEquals(serializer.errors, {})
class MetadataTests(TestCase): class MetadataTests(TestCase):
def test_empty(self): def test_empty(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment