Add flexibility for fields handling bad data (MongoEngine/mongoengine#78)
This commit is contained in:
parent
22010d7d95
commit
90fa0f6c4a
@ -4,6 +4,7 @@ Changelog
|
|||||||
|
|
||||||
Changes in 0.7.X
|
Changes in 0.7.X
|
||||||
=================
|
=================
|
||||||
|
- Add flexibility for fields handling bad data (MongoEngine/mongoengine#78)
|
||||||
- Embedded Documents no longer handle meta definitions
|
- Embedded Documents no longer handle meta definitions
|
||||||
- Use weakref proxies in base lists / dicts (MongoEngine/mongoengine#74)
|
- Use weakref proxies in base lists / dicts (MongoEngine/mongoengine#74)
|
||||||
- Improved queryset filtering (hmarr/mongoengine#554)
|
- Improved queryset filtering (hmarr/mongoengine#554)
|
||||||
|
@ -207,7 +207,6 @@ class Document(BaseDocument):
|
|||||||
else:
|
else:
|
||||||
object_id = doc['_id']
|
object_id = doc['_id']
|
||||||
updates, removals = self._delta()
|
updates, removals = self._delta()
|
||||||
|
|
||||||
# Need to add shard key to query, or you get an error
|
# Need to add shard key to query, or you get an error
|
||||||
select_dict = {'_id': object_id}
|
select_dict = {'_id': object_id}
|
||||||
shard_key = self.__class__._meta.get('shard_key', tuple())
|
shard_key = self.__class__._meta.get('shard_key', tuple())
|
||||||
|
@ -49,8 +49,11 @@ class StringField(BaseField):
|
|||||||
def to_python(self, value):
|
def to_python(self, value):
|
||||||
if isinstance(value, unicode):
|
if isinstance(value, unicode):
|
||||||
return value
|
return value
|
||||||
else:
|
try:
|
||||||
return value.decode('utf-8')
|
value = value.decode('utf-8')
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
return value
|
||||||
|
|
||||||
def validate(self, value):
|
def validate(self, value):
|
||||||
if not isinstance(value, basestring):
|
if not isinstance(value, basestring):
|
||||||
@ -150,7 +153,11 @@ class IntField(BaseField):
|
|||||||
super(IntField, self).__init__(**kwargs)
|
super(IntField, self).__init__(**kwargs)
|
||||||
|
|
||||||
def to_python(self, value):
|
def to_python(self, value):
|
||||||
return int(value)
|
try:
|
||||||
|
value = int(value)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
return value
|
||||||
|
|
||||||
def validate(self, value):
|
def validate(self, value):
|
||||||
try:
|
try:
|
||||||
@ -180,7 +187,11 @@ class FloatField(BaseField):
|
|||||||
super(FloatField, self).__init__(**kwargs)
|
super(FloatField, self).__init__(**kwargs)
|
||||||
|
|
||||||
def to_python(self, value):
|
def to_python(self, value):
|
||||||
return float(value)
|
try:
|
||||||
|
value = float(value)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
return value
|
||||||
|
|
||||||
def validate(self, value):
|
def validate(self, value):
|
||||||
if isinstance(value, int):
|
if isinstance(value, int):
|
||||||
@ -212,9 +223,14 @@ class DecimalField(BaseField):
|
|||||||
super(DecimalField, self).__init__(**kwargs)
|
super(DecimalField, self).__init__(**kwargs)
|
||||||
|
|
||||||
def to_python(self, value):
|
def to_python(self, value):
|
||||||
|
original_value = value
|
||||||
if not isinstance(value, basestring):
|
if not isinstance(value, basestring):
|
||||||
value = unicode(value)
|
value = unicode(value)
|
||||||
return decimal.Decimal(value)
|
try:
|
||||||
|
value = decimal.Decimal(value)
|
||||||
|
except ValueError:
|
||||||
|
return original_value
|
||||||
|
return value
|
||||||
|
|
||||||
def to_mongo(self, value):
|
def to_mongo(self, value):
|
||||||
return unicode(value)
|
return unicode(value)
|
||||||
@ -242,7 +258,11 @@ class BooleanField(BaseField):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def to_python(self, value):
|
def to_python(self, value):
|
||||||
return bool(value)
|
try:
|
||||||
|
value = bool(value)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
return value
|
||||||
|
|
||||||
def validate(self, value):
|
def validate(self, value):
|
||||||
if not isinstance(value, bool):
|
if not isinstance(value, bool):
|
||||||
@ -385,7 +405,11 @@ class ComplexDateTimeField(StringField):
|
|||||||
'ComplexDateTimeField')
|
'ComplexDateTimeField')
|
||||||
|
|
||||||
def to_python(self, value):
|
def to_python(self, value):
|
||||||
return self._convert_from_string(value)
|
original_value = value
|
||||||
|
try:
|
||||||
|
return self._convert_from_string(value)
|
||||||
|
except:
|
||||||
|
return original_value
|
||||||
|
|
||||||
def to_mongo(self, value):
|
def to_mongo(self, value):
|
||||||
return self._convert_from_datetime(value)
|
return self._convert_from_datetime(value)
|
||||||
@ -1340,9 +1364,13 @@ class UUIDField(BaseField):
|
|||||||
|
|
||||||
def to_python(self, value):
|
def to_python(self, value):
|
||||||
if not self._binary:
|
if not self._binary:
|
||||||
if not isinstance(value, basestring):
|
original_value = value
|
||||||
value = unicode(value)
|
try:
|
||||||
return uuid.UUID(value)
|
if not isinstance(value, basestring):
|
||||||
|
value = unicode(value)
|
||||||
|
return uuid.UUID(value)
|
||||||
|
except:
|
||||||
|
return original_value
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def to_mongo(self, value):
|
def to_mongo(self, value):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user