FYI:I found the solution. It is a *GOTCHA* issue when upgrading to
1.92.3 from 1.77.3
Now you have to use .xml() on the URL() that you send into the GAE
API:
   upload_url =
blobstore.create_upload_url(URL(r=request,c='default',f='upbm2gig_gaehandle
r',args=None).xml())
      # This works
   upload_url =
blobstore.create_upload_url(URL(r=request,c='default',f='upbm2gig_gaehandle
r',args=None))
      # This crashes
It crashes because between 1.77.3 and 1.92.3, a change was made in
html.py in the URL() class.
Around html.py line 265, they added XML() around the return value.
    return XML(rewrite.url_out(r or _request, env, application,
controller, function, args, other, scheme, host, port))
In 1.77.3 it was formerly:
    return rewrite.url_out(r or _request, env,....)
So basically they have changed the signature of the URL() object.


On Mar 7, 4:58 pm, dlypka <dly...@gmail.com> wrote:
> Ever since web2py 1.91.6 I have had to patch html.py to avoid this
> exception when my code
> tries to do an ajax callback to get some HTML:
>
> Traceback (most recent call last):
>   File "c:\Google\AppEngine\esentrnet\gluon\restricted.py", line 188,
> in restricted
>     exec ccode in environment
>   File "c:\Google\AppEngine\esentrnet\applications\init/controllers/
> default.py:upbm2gig", line 238, in <module>
>   File "c:\Google\AppEngine\esentrnet\gluon\globals.py", line 95, in
> <lambda>
>     self._caller = lambda f: f()
>   File "c:\Google\AppEngine\esentrnet\applications\init/controllers/
> default.py:upbm2gig", line 93, in upbm2gig
>   File "applications\init\modules\controllers\default_module.py", line
> 1766, in upbm2gig
>     upload_url =
> blobstore.create_upload_url(URL(r=request,c='default',f='upbm2gig_gaehandle 
> r',args=None))
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\blobstore\blobstore.py", line 192, in create_upload_url
>     _make_sync_call('blobstore', 'CreateUploadURL', request, response)
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\apiproxy_stub_map.py", line 86, in MakeSyncCall
>     return stubmap.MakeSyncCall(service, call, request, response)
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\apiproxy_stub_map.py", line 286, in MakeSyncCall
>     rpc.CheckSuccess()
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\apiproxy_rpc.py", line 149, in _WaitImpl
>     self.request, self.response)
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\apiproxy_stub.py", line 80, in MakeSyncCall
>     method(request, response)
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\blobstore\blobstore_stub.py", line 218, in
> _Dynamic_CreateUploadURL
>     users.get_current_user())
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\blobstore\blobstore_stub.py", line 204, in _CreateSession
>     user)
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\blobstore\blobstore_stub.py", line 79, in CreateUploadSession
>     'state': 'init'})
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\datastore.py", line 638, in update
>     self.__setitem__(name, value)
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\datastore.py", line 617, in __setitem__
>     datastore_types.ValidateProperty(name, value)
>   File "C:\Program Files (x86)\Google\google_appengine\google\appengine
> \api\datastore_types.py", line 1323, in ValidateProperty
>     'Unsupported type for property %s: %s' % (name, v.__class__))
> BadValueError: Unsupported type for property success_path: <class
> 'gluon.html.XML'>
>
> CAUSED BY a change in html.py line 265  in 1.92.3 where it does
>     return XML(rewrite.filter_out(url, env,....
>
> the old web2py code in 1.77.3.does not do this.
>
> 1.77.3 does
>     return rewrite.filter_out(url, env) which works for me.
>
> My patch is to delete the enclosing XML() expression.

Reply via email to