Re: SessionAppContext handling session timeout / deleting.
Andrew McNamara <[email protected]> Tue, 05 Jun 2007 00:12:24 +1000
| Newsgroups | gmane.comp.web.albatross.general |
|---|---|
| Message-ID | <[email protected]> |
>I'm using SessionAppContext/SimpleSessionApp for server side sessions. >After a server session times out and I receive a subsequent request from a >client (which had a session) as a result a SessionExpired exception is >raised (quite correctly since it timed out) which I guess I have to catch >at app.run(Request()). > >What is the right way to delete the old session and return a selected >template page? I notice your FAQ has an entry describing how to delete a >session when I have a handle to the context. But in this case I don't >have a handle to the context because of where I am handling the exception >and presumably because if it is expired it never got instantiated for >that request... > >Feel free to point me to relevant documentation (I did look but nothing >jumped out at me that seemed appropriate) but I am new to Albatross and >may have missed it. Hmmm, tricky. There's no need to delete the session, since it's already gone: I suspect what you should do is replace the default exception page with a friendlier version for this specific exception. The Application classes call their handle_exception() method when the run method raises an exception - you could subclass the Application class you've chosen, and add your own handle_exception method that presents your chosen template. Have a look at Application.handle_exception() in albatross/app.py - you'll basically want to do something very similar to what's there. If you think overloading the albatross method is against the rules, don't worry - this is the way Albatross is intended to be used (which is why all manner of "internal" methods are documented). -- Andrew McNamara, Senior Developer, Object Craft http://www.object-craft.com.au/