SessionDataManager oddness
Dear All, I am trying to add session tracking to a Product of mine. I am trying to add a SessionDataManager to a Folderish object in the __init__ method of the class, but having troubles. I think I am importing everything: from Globals import HTMLFile from Globals import Persistent from Globals import default__class_init__ import Acquisition import AccessControl.Role import OFS.Folder from Products.ZCatalog import ZCatalog from Products.BTreeFolder import BTreeFolder from Products.CoreSessionTracking.SessionDataManager import SessionDataManager from Products.CoreSessionTracking.SessionDataContainer import SessionDataContainerMount from Products.CoreSessionTracking.SessionData import SessionData try: from Products.CoreSessionTracking.SessioningInterfaces import SessionDataManagerInterface except: # pre-2.3 Zopes don't have an Interfaces module class SessionDataManagerInterface: pass then in my __init__ method: ob = SessionDataManager( id='session_data_mgr', title='', path=None, timeout_mins=20) self._setObject('session_data_mgr', ob) However I get an attribute error when trying to add an intance of the product. _sdc not found. I have traced it using pdb, and from what I can find out it appears as if it fails in _setObject. More specifically SessionDataContainerMount seems to not returning the correct thing. I have tried tracing the normal addition of a SessionDataManager in Zope and it works fine. SessionDataContainerMount doesn't have an __init__ method, but it looks like when I add a S.D.M via the normal web interface __of__ gets called, but when my product tries to add it __del__ gets called. Any ideas? I am at the end of my Zope internals knowledge.... if there is anything else I can provide to help diagnose, let me know. TIA, Matt -- Matt Hamilton matth@netsight.co.uk Netsight Internet Solutions, Ltd. Business Vision on the Internet http://www.netsight.co.uk +44 (0)117 9090901 Web Hosting | Web Design | Domain Names | Co-location | DB Integration
Mark, Try putting the code which adds the session data manager from your class' __init__ into a manage_afterAdd method of your class, e.g.: def manage_afterAdd(self, item, container): ob = SessionDataManager( id='session_data_mgr', title='', path=None, timeout_mins=20) self._setObject('session_data_mgr', ob) manage_afterAdd is called automagically by the _setObject machinery at init time, but it gets the object in its acquisition-wrapped context. ----- Original Message ----- From: "Matt Hamilton" <matth@netsight.co.uk> To: <zope-dev@zope.org> Sent: Friday, March 02, 2001 5:19 AM Subject: [Zope-dev] SessionDataManager oddness
Dear All, I am trying to add session tracking to a Product of mine. I am trying to add a SessionDataManager to a Folderish object in the __init__ method of the class, but having troubles. I think I am importing everything:
from Globals import HTMLFile from Globals import Persistent from Globals import default__class_init__ import Acquisition import AccessControl.Role import OFS.Folder from Products.ZCatalog import ZCatalog from Products.BTreeFolder import BTreeFolder from Products.CoreSessionTracking.SessionDataManager import SessionDataManager from Products.CoreSessionTracking.SessionDataContainer import SessionDataContainerMount from Products.CoreSessionTracking.SessionData import SessionData try: from Products.CoreSessionTracking.SessioningInterfaces import SessionDataManagerInterface except: # pre-2.3 Zopes don't have an Interfaces module class SessionDataManagerInterface: pass
then in my __init__ method:
ob = SessionDataManager( id='session_data_mgr', title='', path=None, timeout_mins=20) self._setObject('session_data_mgr', ob)
However I get an attribute error when trying to add an intance of the product. _sdc not found.
I have traced it using pdb, and from what I can find out it appears as if it fails in _setObject. More specifically SessionDataContainerMount seems to not returning the correct thing.
I have tried tracing the normal addition of a SessionDataManager in Zope and it works fine. SessionDataContainerMount doesn't have an __init__ method, but it looks like when I add a S.D.M via the normal web interface __of__ gets called, but when my product tries to add it __del__ gets called.
Any ideas? I am at the end of my Zope internals knowledge.... if there is anything else I can provide to help diagnose, let me know.
TIA, Matt
-- Matt Hamilton matth@netsight.co.uk Netsight Internet Solutions, Ltd. Business Vision on the Internet http://www.netsight.co.uk +44 (0)117 9090901 Web Hosting | Web Design | Domain Names | Co-location | DB Integration
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
participants (2)
-
Chris McDonough -
Matt Hamilton