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 <[email protected]> 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.