[SQL-CVS] r4601 - SQLObject/branches/1.3/sqlobject
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: <sub...@co...> - 2013-05-26 15:05:24
|
Author: phd Date: Sun May 26 09:05:11 2013 New Revision: 4601 Log: Remove and restore _SO_validatorState and _SO_createValues Call syncUpdate and remove _SO_validatorState and _SO_createValues before pickling to avoid pickling a weak proxy to self. Restore _SO_validatorState and _SO_createValues on unpickling. Modified: SQLObject/branches/1.3/sqlobject/main.py Modified: SQLObject/branches/1.3/sqlobject/main.py ============================================================================== --- SQLObject/branches/1.3/sqlobject/main.py Sat May 18 03:36:59 2013 (r4600) +++ SQLObject/branches/1.3/sqlobject/main.py Sun May 26 09:05:11 2013 (r4601) @@ -1676,14 +1676,20 @@ if self.sqlmeta._perConnection: from pickle import PicklingError raise PicklingError('Cannot pickle an SQLObject instance that has a per-instance connection') + if self.sqlmeta.lazyUpdate and self._SO_createValues: + self.syncUpdate() d = self.__dict__.copy() del d['sqlmeta'] + del d['_SO_validatorState'] del d['_SO_writeLock'] + del d['_SO_createValues'] return d def __setstate__(self, d): self.__init__(_SO_fetch_no_create=1) + self._SO_validatorState = sqlbuilder.SQLObjectState(self) self._SO_writeLock = threading.Lock() + self._SO_createValues = {} self.__dict__.update(d) cls = self.__class__ cache = self._connection.cache |