Update of /cvsroot/sqlobject/SQLObject/SQLObject
In directory sc8-pr-cvs1:/tmp/cvs-serv13460/SQLObject
Modified Files:
Cache.py SQLObject.py
Log Message:
* Fixed bug with cached attributes not being updated
* Added clear method to cache objects
Index: Cache.py
===================================================================
RCS file: /cvsroot/sqlobject/SQLObject/SQLObject/Cache.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** Cache.py 17 Apr 2003 02:59:29 -0000 1.5
--- Cache.py 5 May 2003 20:40:37 -0000 1.6
***************
*** 135,138 ****
--- 135,145 ----
self.lock.release()
+ def clear(self):
+ self.lock.acquire()
+ for key, value in self.cache.items():
+ self.expiredCache[id] = ref(obj)
+ self.cache = {}
+ self.lock.release()
+
class CacheSet(object):
Index: SQLObject.py
===================================================================
RCS file: /cvsroot/sqlobject/SQLObject/SQLObject/SQLObject.py,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -d -r1.31 -r1.32
*** SQLObject.py 5 May 2003 17:35:19 -0000 1.31
--- SQLObject.py 5 May 2003 20:40:37 -0000 1.32
***************
*** 559,563 ****
# anytime the object was returned from cache.
self.id = id
- self._SO_autoInitDone = False
self._SO_writeLock = threading.Lock()
# If no connection was given, we'll inherit the class
--- 559,562 ----
***************
*** 591,605 ****
return
- # There's a write lock. Not sure if I need this...
- #self._SO_writeLock.acquire()
self._connection._SO_update(self,
[(self._SO_columnDict[name].dbName,
value)])
! # _SO_autoInitDone implies there's a cached value we also
! # have to update.
! if self._SO_autoInitDone:
setattr(self, instanceName(name), value)
- #self._SO_writeLock.release()
def set(self, **kw):
--- 590,599 ----
return
self._connection._SO_update(self,
[(self._SO_columnDict[name].dbName,
value)])
! if self._cacheValues:
setattr(self, instanceName(name), value)
def set(self, **kw):
***************
*** 626,630 ****
if self._SO_plainSetters.has_key(name):
toUpdate[name] = value
! if self._SO_autoInitDone:
setattr(self, instanceName(name), value)
else:
--- 620,624 ----
if self._SO_plainSetters.has_key(name):
toUpdate[name] = value
! if self._cacheValues:
setattr(self, instanceName(name), value)
else:
***************
*** 744,748 ****
raise SQLObjectNotFound, "The %s by alternateID %s=%s does not exist" % (cls.__name__, dbIDName, repr(value))
obj = cls(result[0])
! if not obj._SO_autoInitDone:
obj._SO_writeLock.acquire()
obj._SO_selectInit(result[1:])
--- 738,742 ----
raise SQLObjectNotFound, "The %s by alternateID %s=%s does not exist" % (cls.__name__, dbIDName, repr(value))
obj = cls(result[0])
! if not obj._cacheValues:
obj._SO_writeLock.acquire()
obj._SO_selectInit(result[1:])
***************
*** 822,826 ****
# Kills this object. Kills it dead!
self._SO_obsolete = True
- self._SO_autoInitDone = False
self._connection._SO_delete(self)
self._connection.cache.purge(self.id, self.__class__)
--- 816,819 ----
|