mς 'αΈEc@s‘dkZdkZdkZdklZdkZdklZdkl Z l Z l Z dk l Z dklZdklZdklZdklZdkZd kTd klZd klZlZlZd klZl Z ei!d ƒi"Z#edƒZ$de%fd„ƒYZ&ei'de(ƒƒZ)dZ*ddddd„Z,dee e eeefd„ƒYZ-de fd„ƒYZ.ei/e-ƒdS(N(s getLogger(sItem(sImplicitsExplicitsaq_base(s Persistent(sOwned(s RoleManager(sTabs(sClassSecurityInfo(t*(sDEBUG(sisAWellFormedBrowserIdsgetNewBrowserIdsBROWSERID_MANAGER_NAME(sregisterBeforeTraversesunregisterBeforeTraverses[^a-zA-Z0-9-_~\,\. \/]tSessionDataManagertSessionDataManagerErrcBstZRS(N(t__name__t __module__(((tC/data/zmath/zope/lib/python/Products/Sessions/SessionDataManager.pyR#ssdtml/addDataManagersAdd Session Data ManagertcCsPt||||ƒ}|i||ƒ|dj o|i ||ddƒSndS(t t update_menuiN( Rtidtpathttitlet requestNametobtselft _setObjecttREQUESTtNonet manage_main(RR R R R RR ((RtconstructSessionDataManager*s  cBs…tZdZdZhdd<ddtargstdebugRGtunrestrictedTraverseR(RRIRN((RR?Μs   tgetRequestNamecCs|ipdS(RRN(RR1(R((RRQεscCs|i|iƒdS(s Add our traversal hook N(RR5R1(RtitemRD((Rtmanage_afterAddιscCs|idƒdS(s Clean up on delete N(RR5R(RRRRD((Rtmanage_beforeDeleteνscCs…|ii}t|ddƒo t|dƒ|`d|_n|o;t ||i ƒ}t ||ddƒd|_||_ndS(Nt_hasTraversalHookRi2i(Rtaq_innerRCtparentR,RtunregisterBeforeTraverseRUR1trequestSessionNametSessionDataManagerTraverserR thooktregisterBeforeTraverse(RRYRWR[((RR5ρs    (+RRt__doc__Rtmanage_optionstClassSecurityInfotsecuritytdeclareObjectPublictoktsetDefaultAccesstsetPermissionDefaulttCHANGE_DATAMGR_PERMtMGMT_SCREEN_PERMtACCESS_CONTENTS_PERMtARBITRARY_SESSIONDATA_PERMtACCESS_SESSIONDATA_PERMRtSessionInterfacestSessionDataManagerInterfacet__implements__tGlobalstDTMLFiletglobalsRtdeclareProtectedR"R(R*R$RR2R3R0R/R=R)R'R+R?RQRSRTR5(((RR2sV E  <                   RZcBstZd„Zd„ZRS(NcCs||_||_dS(N(RYRR1tsessionDataManagerNamet_sessionDataManager(RRYRq((RR2s cCsšyB|i}t|tƒp |i}nt||ƒ}|i }Wn*d}t i |dt iƒƒdSnX|idj o|i|i|ƒndS(sν This method places a session data object reference in the request. It is called on each and every request to Zope in Zopes after 2.5.0 when there is a session data manager installed in the root. s6Session automatic traversal failed to get session datatexc_infoN(RRrtsdmNamet isinstanceR6R R,RDtsdmR"tmsgRJRKtsysRsR1Rtrequesttset_lazy(RRDRyRtR"RwRv((Rt__call__s   (RRR2R{(((RRZs (0trettimeRxtloggingt getLoggerRmtOFS.SimpleItemtItemt AcquisitiontImplicittExplicittaq_baset Persistencet PersistenttAccessControl.OwnedtOwnedtAccessControl.Rolet RoleManagertApp.ManagementtTabst AccessControlR_RjtSessionPermissionstcommonRMtBrowserIdManagertisAWellFormedBrowserIdtgetNewBrowserIdR-tZPublisher.BeforeTraverseR\RXtcompiletsearchR:RJt ExceptionRRnRotconstructSessionDataManagerFormtADD_SESSION_DATAMANAGER_PERMRRRRZtInitializeClass(RZRXR\RR‹R:RJR™R“R|R˜RƒRR…R’R_R„R‡RjRxRRMR-RR‰RRmR}R((Rt?s0             %Ο#