Updated pickling (#316)

This commit is contained in:
Ross Lawley 2013-05-20 10:04:17 +00:00
parent 11b7cfb5ff
commit 6299015039
2 changed files with 11 additions and 11 deletions

View File

@ -141,16 +141,16 @@ class BaseDocument(object):
super(BaseDocument, self).__setattr__(name, value) super(BaseDocument, self).__setattr__(name, value)
def __getstate__(self): def __getstate__(self):
removals = ("get_%s_display" % k data = {}
for k, v in self._fields.items() if v.choices) for k in ('_changed_fields', '_initialised', '_created'):
for k in removals: data[k] = getattr(self, k)
if hasattr(self, k): data['_data'] = self.to_mongo()
delattr(self, k) return data
return self.__dict__
def __setstate__(self, __dict__): def __setstate__(self, data):
self.__dict__ = __dict__ for k in ('_changed_fields', '_initialised', '_created'):
self.__set_field_display() setattr(self, k, data[k])
self._data = self.__class__._from_son(data["_data"])._data
def __iter__(self): def __iter__(self):
if 'id' in self._fields and 'id' not in self._fields_ordered: if 'id' in self._fields and 'id' not in self._fields_ordered: