Fixed DecimalField bug
This commit is contained in:
parent
207fd9fcb7
commit
90200dbe9c
@ -155,6 +155,9 @@ class DecimalField(BaseField):
|
|||||||
if not isinstance(value, basestring):
|
if not isinstance(value, basestring):
|
||||||
value = unicode(value)
|
value = unicode(value)
|
||||||
return decimal.Decimal(value)
|
return decimal.Decimal(value)
|
||||||
|
|
||||||
|
def to_mongo(self, value):
|
||||||
|
return unicode(value)
|
||||||
|
|
||||||
def validate(self, value):
|
def validate(self, value):
|
||||||
if not isinstance(value, decimal.Decimal):
|
if not isinstance(value, decimal.Decimal):
|
||||||
|
@ -136,12 +136,16 @@ class FieldTest(unittest.TestCase):
|
|||||||
height = DecimalField(min_value=Decimal('0.1'),
|
height = DecimalField(min_value=Decimal('0.1'),
|
||||||
max_value=Decimal('3.5'))
|
max_value=Decimal('3.5'))
|
||||||
|
|
||||||
|
Person.drop_collection()
|
||||||
|
|
||||||
person = Person()
|
person = Person()
|
||||||
person.height = Decimal('1.89')
|
person.height = Decimal('1.89')
|
||||||
person.validate()
|
person.save()
|
||||||
|
person.reload()
|
||||||
|
self.assertEqual(person.height, Decimal('1.89'))
|
||||||
|
|
||||||
person.height = '2.0'
|
person.height = '2.0'
|
||||||
person.validate()
|
person.save()
|
||||||
person.height = 0.01
|
person.height = 0.01
|
||||||
self.assertRaises(ValidationError, person.validate)
|
self.assertRaises(ValidationError, person.validate)
|
||||||
person.height = Decimal('0.01')
|
person.height = Decimal('0.01')
|
||||||
@ -149,6 +153,8 @@ class FieldTest(unittest.TestCase):
|
|||||||
person.height = Decimal('4.0')
|
person.height = Decimal('4.0')
|
||||||
self.assertRaises(ValidationError, person.validate)
|
self.assertRaises(ValidationError, person.validate)
|
||||||
|
|
||||||
|
Person.drop_collection()
|
||||||
|
|
||||||
def test_boolean_validation(self):
|
def test_boolean_validation(self):
|
||||||
"""Ensure that invalid values cannot be assigned to boolean fields.
|
"""Ensure that invalid values cannot be assigned to boolean fields.
|
||||||
"""
|
"""
|
||||||
|
@ -623,6 +623,27 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
|
|
||||||
BlogPost.drop_collection()
|
BlogPost.drop_collection()
|
||||||
|
|
||||||
|
def test_update_pull(self):
|
||||||
|
"""Ensure that the 'pull' update operation works correctly.
|
||||||
|
"""
|
||||||
|
class Comment(EmbeddedDocument):
|
||||||
|
content = StringField()
|
||||||
|
|
||||||
|
class BlogPost(Document):
|
||||||
|
slug = StringField()
|
||||||
|
comments = ListField(EmbeddedDocumentField(Comment))
|
||||||
|
|
||||||
|
comment1 = Comment(content="test1")
|
||||||
|
comment2 = Comment(content="test2")
|
||||||
|
|
||||||
|
post = BlogPost(slug="test", comments=[comment1, comment2])
|
||||||
|
post.save()
|
||||||
|
self.assertTrue(comment2 in post.comments)
|
||||||
|
|
||||||
|
BlogPost.objects(slug="test").update(pull__comments__content="test2")
|
||||||
|
post.reload()
|
||||||
|
self.assertTrue(comment2 not in post.comments)
|
||||||
|
|
||||||
def test_order_by(self):
|
def test_order_by(self):
|
||||||
"""Ensure that QuerySets may be ordered.
|
"""Ensure that QuerySets may be ordered.
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user