skip to navigation
skip to content

dolmen.beaker 0.1

An implementation of a zope session, using beaker.

Downloads ↓

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