fixes for SequenceField

This commit is contained in:
Wilson Júnior
2011-07-22 10:19:41 -03:00
parent 382b9a61a8
commit 130fb9916d
3 changed files with 39 additions and 0 deletions

View File

@@ -577,6 +577,7 @@ class BaseDocument(object):
signals.pre_init.send(self.__class__, document=self, values=values)
self._data = {}
self._initialised = False
# Assign default values to instance
for attr_name, field in self._fields.items():
value = getattr(self, attr_name, None)

View File

@@ -911,14 +911,26 @@ class SequenceField(IntField):
if instance is None:
return self
if not instance._data:
return
value = instance._data.get(self.name)
if not value and instance._initialised:
value = self.generate_new_value()
instance._data[self.name] = value
instance._mark_as_changed(self.name)
return value
def __set__(self, instance, value):
if value is None and instance._initialised:
value = self.generate_new_value()
return super(SequenceField, self).__set__(instance, value)
def to_python(self, value):
if value is None:
value = self.generate_new_value()