[albatross-users] SimpleSessionApp, <a href> and session time out

Hans Kramer hans.kramer at xs4all.nl
Thu Oct 9 19:53:26 EST 2008


Dear all,

I am new to Albatross and Python Webframe works. Moreover, I am not a
seasoned web developer and in the past I really hated working with this
kind of technology. However, I have to say that I really like what you
guys have done with Albatross. I am excited.

I have a few questions and half baked solutions I want to have some feed
back on.

First of all I would like to use the SimpleSessionApp class
instead of the RandomModularSessionApp class. (I tend to like to work
with classes) Perhaps this is a mistake, just be frank.

A)
Then I want to have a link in my template files for people to log out.
Something like this: (I also need these kind of links for other
purposes, I might come on in a later e-mail)

<al-a href="logout">Log Out</al-a>

Clicking on it, the frame work should execute:
class LogoutPage:

    name = 'logout'

    def page_process(self, context):
        context.remove_session()
        context.set_page('login')

Currently that didn't work. I found a solution by making some small
changes. First I edited in app.py the run method of class Application.
Just before self.load_page(ctx) I put the following command:
   if os.environ.has_key('PATH_INFO'): 
       ctx.locals.__page__ = os.environ['PATH_INFO'][1:]

This works fine, except that in the next page the URI is rendered as
/cgi-bin/application.py/logout and the user cannot log in. I fixed this
by editing cgiapp.py and changing
   def get_uri(self):
        return self.get_param('REQUEST_URI')
to
   def get_uri(self):
       return self.get_param('SCRIPT_NAME')

Is this going to break anything? Is this a good solution? Or am I doing
something fundamentally wrong (by for instance using SimpleSessionApp).
If not, can I supply a patch?

B)
Session time out that was something that was biting me too. I work for a
Pharmaceutical company (clinical trail) and they really hate to see
stack traces. So when a session times out, instead of the stack trace I
want to refer it to a TimeOut page. (in the future I might want to
implement something that browser keeps refreshing the session as long as
it is alive... anybody?).
I solved that in similar fashion as above. However, due to lack of the
understanding of the internals I hard coded the page name timeout.
Again I edited run method in app.py. If the load_session fails, I create
a new session and send if off to the timeout page.

 try:
     self.load_session(ctx)
     if os.environ.has_key('PATH_INFO'):
         ctx.locals.__page__ = os.environ['PATH_INFO'][1:]
 except:
     ctx.new_session()
     ctx.locals.__page__ = "timeout"

Please let me know what anybody thinks of the edits I made.
Thanks again for creating such a new framework. 

Kind regards,

Hans Kramer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://www.object-craft.com.au/pipermail/albatross-users/attachments/20081009/33356b9b/attachment.pgp>


More information about the Albatross-users mailing list