Updated pickling (#316)
This commit is contained in:
parent
11b7cfb5ff
commit
6299015039
@ -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:
|
||||||
|
@ -25,11 +25,11 @@ class PickleSignalsTest(Document):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def post_save(self, sender, document, created, **kwargs):
|
def post_save(self, sender, document, created, **kwargs):
|
||||||
pickled = pickle.dumps(document)
|
pickled = pickle.dumps(document)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def post_delete(self, sender, document, **kwargs):
|
def post_delete(self, sender, document, **kwargs):
|
||||||
pickled = pickle.dumps(document)
|
pickled = pickle.dumps(document)
|
||||||
|
|
||||||
signals.post_save.connect(PickleSignalsTest.post_save, sender=PickleSignalsTest)
|
signals.post_save.connect(PickleSignalsTest.post_save, sender=PickleSignalsTest)
|
||||||
signals.post_delete.connect(PickleSignalsTest.post_delete, sender=PickleSignalsTest)
|
signals.post_delete.connect(PickleSignalsTest.post_delete, sender=PickleSignalsTest)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user