[Zope-Checkins] CVS: Zope/lib/python/Products/Sessions - SessionDataManager.py:1.18
Chris McDonough
chrism@zope.com
Mon, 24 Jun 2002 15:31:18 -0400
Update of /cvs-repository/Zope/lib/python/Products/Sessions
In directory cvs.zope.org:/tmp/cvs-serv1991
Modified Files:
SessionDataManager.py
Log Message:
Changed transient object invalidate() method to search acquisition
chain for its transient object container.
Changed session data manager to splice itself into the transient
object container's acquisition path before returning a session
data object via getSessionData.
Updated unit tests to reflect changes.
=== Zope/lib/python/Products/Sessions/SessionDataManager.py 1.17 => 1.18 ===
""" returns new or existing session data object """
container = self._getSessionDataContainer()
- ob = aq_base(container.new_or_existing(key))
+ ob = container.new_or_existing(key)
+ if hasattr(ob, '__of__') and hasattr(ob, 'aq_parent'):
+ # splice ourselves into the acquisition chain
+ return ob.__of__(self.__of__(ob.aq_parent))
return ob.__of__(self)
def _getSessionDataObjectByKey(self, key):
""" returns new or existing session data object """
container = self._getSessionDataContainer()
- ob = aq_base(container.get(key))
+ ob = container.get(key)
if ob is not None:
+ if hasattr(ob, '__of__') and hasattr(ob, 'aq_parent'):
+ # splice ourselves into the acquisition chain
+ return ob.__of__(self.__of__(ob.aq_parent))
return ob.__of__(self)
def _getSessionDataContainer(self):
@@ -260,3 +266,5 @@
return
if self._requestSessionName is not None:
request.set_lazy(self._requestSessionName, getSessionData)
+
+Globals.InitializeClass(SessionDataManager)