It is not a web2py bug. web2py it is just telling you that GAE cannot
do this, because there are no expressions on GAE.

Instead of this:

db(db.user.id == session.user_id).update(post_num =  db.user.post_num
+ 1)

do

db(db.user.id == session.user_id).update(post_num = auth.user.post_num
+ 1)

and you will be fine.

On Mar 12, 4:05 am, maki <mak...@gmail.com> wrote:
> hi,
>
>   An app works fine on local machine, but an exception occurs when
> running on gae, the error is like this:
>
> Traceback (most recent call last):
>   File "F:\web2py\deploy\web2py\gluon\restricted.py", line 188, in restricted
>     exec ccode in environment
>   File 
> "F:\web2py\deploy\web2py\applications\init/controllers/default.py:index",
> line 257, in <module>
>   File "F:\web2py\deploy\web2py\gluon\globals.py", line 95, in <lambda>
>     self._caller = lambda f: f()
>   File 
> "F:\web2py\deploy\web2py\applications\init/controllers/default.py:index",
> line 33, in index
>   File "F:\web2py\deploy\web2py\gluon\dal.py", line 4735, in update
>     return self.db._adapter.update(tablename,self.query,fields)
>   File "F:\web2py\deploy\web2py\gluon\dal.py", line 2887, in update
>     setattr(item, field.name, self.represent(value,field.type))
>   File "F:\web2py\deploy\web2py\gluon\dal.py", line 2449, in represent
>     raise SyntaxError, "non supported on GAE"
> SyntaxError: non supported on GAE
>
> line 33 of default.py is like this:
> ...
>         if session.user_id != 0:
>             db(db.user.id == session.user_id).update(post_num =
> db.user.post_num + 1)
> ...
> the web2py version is 1.93.2, the code is like this:
>  ....
>         if isinstance(obj, (Expression, Field)):
>             raise SyntaxError, "non supported on GAE"
> ...
>
> Is this a web2py bug?

Reply via email to