An implementation of a zope session, using beaker.
Project description
Session
Configuration
>>> from zope.component import getUtility, queryUtility >>> from dolmen.beaker.interfaces import ISessionConfig>>> session_config = queryUtility(ISessionConfig) >>> session_config.get('key') 'beaker.session.id'
Initialisation
dolmen.beaker initialize the beaker session when the traversing starts (traversing the IRootFolder object):
>>> from zope.event import notify >>> import grokcore.component as grok >>> from zope.publisher.browser import TestRequest >>> from zope.publisher.interfaces.http import IHTTPRequest >>> from zope.traversing.interfaces import BeforeTraverseEvent
First we create an instance of the Request:
>>> request = TestRequest() >>> IHTTPRequest.providedBy(request) True
We initalize our Session with the help of the BeforeTraverseEvent. This event will make an instance of a Session Object in the Request:
>>> from zope.component.hooks import getSite >>> site = getSite() >>> notify(BeforeTraverseEvent(site, request))
We can get the session object using two available adapters:
>>> from dolmen.beaker.interfaces import ISession >>> session = ISession(request) >>> session.__class__ <class 'beaker.session.SessionObject'>
Let’s assign an value to our session and save it:
>>> session['foo'] = 'bar' >>> session.save() >>> session['foo'] 'bar'
A new request will not have access to the session without traversing:
>>> newrequest = TestRequest() >>> newrequest.response._cookies {} >>> session = ISession(newrequest) >>> session['foo'] Traceback (most recent call last): ... KeyError: 'foo'
closure and invalidation
>>> cookie = request.response._cookies >>> cookie {}>>> from zope.publisher.interfaces import EndRequestEvent >>> notify(EndRequestEvent(site, request))>>> cookie = request.response._cookies >>> cookie {'beaker.session.id': {'path': '/', 'value': '...'}}
Invalidating
>>> session = ISession(request) >>> print session['foo'] bar >>> session.invalidate() # Or destroy, to get rid of everything >>> session['foo'] Traceback (most recent call last): ... KeyError: 'foo'>>> print session {'_id': '...'}
The Zope Session adapter
>>> from zope.session.interfaces import ISession as IZopeSession>>> request = TestRequest() >>> notify(BeforeTraverseEvent(site, request))>>> zsession = IZopeSession(request) >>> print zsession <dolmen.beaker.session.ZopeSession object at ...>>>> from zope.interface.verify import verifyObject >>> verifyObject(IZopeSession, zsession) True>>> data = zsession['my_package'] >>> print data <dolmen.beaker.session.NamespaceSessionData object at ...>>>> data['someitem'] = 'test' >>> print data['someitem'] test>>> print zsession.keys() ['my_package.someitem', '_id']>>> data = zsession['some.other.package'] >>> data['info'] = 'Grok !'>>> print zsession.keys() ['my_package.someitem', '_id', 'some.other.package.info']
Changelog
0.1 (2010-07-01)
Initial release
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dolmen.beaker-0.1.tar.gz
(6.0 kB
view hashes)