Merge remote branch 'hmarr/v0.4'

Conflicts:
	tests/fields.py
This commit is contained in:
Florian Schlachter 2010-08-30 14:55:49 +02:00
commit c27ccc91d2
2 changed files with 10 additions and 6 deletions

View File

@ -52,9 +52,6 @@ class BaseField(object):
# Get value from document instance if available, if not use default # Get value from document instance if available, if not use default
value = instance._data.get(self.name) value = instance._data.get(self.name)
if value is None: if value is None:
if callable(self.default): # fixes #46
value = self.default()
else:
value = self.default value = self.default
# Allow callable default values # Allow callable default values
if callable(value): if callable(value):
@ -418,6 +415,11 @@ class BaseDocument(object):
self._meta.get('allow_inheritance', True) == False): self._meta.get('allow_inheritance', True) == False):
data['_cls'] = self._class_name data['_cls'] = self._class_name
data['_types'] = self._superclasses.keys() + [self._class_name] data['_types'] = self._superclasses.keys() + [self._class_name]
try:
if not data['_id']:
del data['_id']
except KeyError:
pass
return data return data
@classmethod @classmethod
@ -449,7 +451,9 @@ class BaseDocument(object):
for field_name, field in cls._fields.items(): for field_name, field in cls._fields.items():
if field.db_field in data: if field.db_field in data:
data[field_name] = field.to_python(data[field.db_field]) value = data[field.db_field]
data[field_name] = (value if value is None
else field.to_python(value))
obj = cls(**data) obj = cls(**data)
obj._present_fields = present_fields obj._present_fields = present_fields

View File

@ -699,7 +699,7 @@ class FieldTest(unittest.TestCase):
Event.drop_collection() Event.drop_collection()
def test_ensure_unique_default_instances(self): def test_ensure_unique_default_instances(self):
"""Ensure that every document has it's own unique default instance.""" """Ensure that every field has it's own unique default instance."""
class D(Document): class D(Document):
data = DictField() data = DictField()
data2 = DictField(default=lambda: {}) data2 = DictField(default=lambda: {})