Yes, exactly, I finally found the problem yesterday, gaeutlities session
behaves different on each object. So how about this solution: I have a base
handler class for all the handlers and what I added is to refresh the user
param from the datastore for every __init__ function. How that sounds?

class scRequestHandler(webapp.RequestHandler):
    def __init__(self):
        webapp.RequestHandler.__init__(self)
        self.Session = scSession()
        # reload the user object, this is because the refeernce property in
the Session
        # object is somehow pickled and the put() operation does not update
the real entity.
        # even though they have the same keys().
        # The solution is to get the user from DS for every request.
        if self.Session.user:
            self.Session.user = db.get(self.Session.user.key())

On Mon, Mar 8, 2010 at 2:55 PM, Nick Johnson (Google) <
nick.john...@google.com> wrote:

> Hi Sumer,
>
> You're storing an entity in the session, and unless the gaeutilities
> session object handles this specially, this results in it pickling the
> 'user' entity and storing it in the session. Calling .put() on the user
> object will update the datastore with the new value, but won't change the
> pickled value the session object is storing. Next request, it will
> deserialize the same data it did previously, with no update.
>
> -Nick Johnson
>
>
> On Sat, Mar 6, 2010 at 2:22 PM, Sumer Cip <sum...@gmail.com> wrote:
>
>> Hi all,
>>
>> Below is the code code I am using in my tests to update a reference
>> tied to my session, the session object I use if from gaeutilities
>> (wrapped it a little). I put a reference object in the session and all
>> working fine.
>>
>>        if not self.Session.user:
>>            user = scMember.all().filter("name = ",
>> "testmember").get()
>>            self.Session.user = user
>>        else:
>>            self.Session.user.playcount += 1
>>            self.Session.user.put()
>>
>> The problem with this code is the put() is not working, if I do not
>> restart app engine SDK. In the error scenario, user is set into the
>> session object, and in the second request I can update the playcount
>> only once. BUt the subsequent operations fail without any notice of
>> error and playcount stays "1" everytime even I have incremented it.
>> This is the testhandler and there is no other code running paralelly.
>> When I restart the SDK, the problem goes away, it works fine.
>> So, I am not sure if I am doing something wrong, it took me 6 hours to
>> identify this thing.
>>
>> Any help will be appericiated.
>>
>> Thanks,
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Google App Engine" group.
>> To post to this group, send email to google-appeng...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/google-appengine?hl=en.
>>
>>
>
>
> --
> Nick Johnson, Developer Programs Engineer, App Engine
> Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
> 368047
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to google-appeng...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>



-- 
Sumer Cip

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to