[web2py] trouble with session and default controller

2014-06-06 Thread weheh
I'm using an ajax call to default.py controller. The default.py sets a 
session variable. Paraphrased, it looks like this:

# model
if not session.myvars:
session.myvars = dict(
somevar=dict(),
othervar=dict(),
...
)


# view
 
...
ajax("{{= URL('default', 'setvar', args=[...])}}",[],":eval");
...




# default.py
if False:
session = current.session  # to make Eclipse happy

def setvar():
...
del session.myvars['somevar']
...
return ''





In other controllers, the session.myvars['somevar'] is given a useful value.

Here's the really strange thing. If the ajax script is triggered, the 
session.myvars['someval'] dict gets deleted as desired. However, only 
temporarily! When another controller later on uses session.myvars, the old 
session.myvars['somevar'] is still in existence.

If I reproduce this by putting the del session.myvars['somevar'] in one of 
my other controllers, the session.myvars['somevar'] gets deleted 
permanently, as desired.

This doesn't just happen for deleting session variables. It also happens 
for setting session variables inside the default.py controller.

OK, here's another clue. Ready? When I put a breakpoint in eclipse and stop 
the default controller from executing straight through, then the session 
variable gets deleted for sure.

Why is this happening? This has got my head spinning! Is there something 
special about default.py that I don't know about? Are you not supposed to 
manipulate session variables in there? Is there a cache issue going on here?

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[web2py] trouble with session and default controller

2014-06-06 Thread weheh
I'm using an ajax call to default.py controller. The default.py sets a 
session variable. Paraphrased, it looks like this:

# model
if not session.myvars:
session.myvars = dict(
somevar=dict(),
othervar=dict(),
...
)


# view
 
...
ajax("{{= URL('default', 'setvar', args=[...])}}",[],":eval");
...




# default.py
if False:
session = current.session  # to make Eclipse happy

def setvar():
...
del session.myvars['somevar']
...
return ''



In other controllers, the session.myvars['somevar'] is given a useful value.

Here's the really strange thing. If the ajax script is triggered, the 
session.myvars['someval'] dict gets deleted as desired. However, only 
temporarily! When another controller later on uses session.myvars, the old 
session.myvars['somevar'] is still in existence.

If I reproduce this by putting the del session.myvars['somevar'] in one of 
my other controllers, the session.myvars['somevar'] gets deleted 
permanently, as desired.

This doesn't just happen for deleting session variables. It also happens 
for setting session variables inside the default.py controller.

Why is this happening? Is there something special about default.py that I 
don't know about? Are you not supposed to manipulate session variables in 
there?

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.