Hans Kramer
2008-10-09 08:53:26 UTC
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>
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>