dolmen.beaker 0.1
An implementation of a zope session, using beaker.
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
| File | Type | Py Version | Uploaded on | Size | # downloads |
|---|---|---|---|---|---|
| dolmen.beaker-0.1.tar.gz (md5) | Source | 2010-07-01 | 5KB | 541 | |
- Author: Souheil Chelfouh
- Home Page: http://www.dolmen-project.org
- Keywords: Zope3 Session,Grok Dolmen
- License: GPL
- Platform: Any
- Categories
- Package Index Owner: trollfot, cklinger
- DOAP record: dolmen.beaker-0.1.xml
