I surrender width *IS_IN_DB* and GAE
I finally solved it width a workaround using *IS_IN_SET:*
First I get rid off IS_IN_DB in my models requirements
titulares = db(db.auth_user.tipo_usuario=='Titular')
db.t_familiares.f_titular.requires=
(IS_IN_DB(titulares,'auth_user.id','%(last_name)s'+', '+ '%(first_name)s'+'
- '+ '%(f_numero_socio)s',sort=True))
Then I build a IS_IN_SET equivalent in the controllers
titulares
=db(db.auth_user.tipo_usuario=='Titular').select(orderby=db.auth_user.last_name)
titu = []
for titulares in titulares:
titu.append((titulares.id,titulares.last_name + ' ' +
titulares.first_name + '- ' +titulares.f_numero_socio))
db.t_familiares.f_titular.requires= IS_IN_SET(titu)
form = SQLFORM(db.t_familiares)
So *titulares.id* is the value I get and *titulares.last_name + ' '
+titulares.first_name + '- ' +titulares.f_numero_socio *is the dropdown
value
It seems to work fine.
May be someone has a better solution
El jueves, 13 de agosto de 2015, 13:48:35 (UTC+2), Jacinto Parga escribió:
>
> I have an aplication deployed in GAE tha has been running for months with
> no problem, but in the last deployment in GAE, it has raised a new error:
>
> TypeError: ConjunctionNode() expects Node instances as arguments; received
> a non-Node instance None
>
> The error has to do with *IS_IN_DB* validator, and is has appeared in the
> last deployment (today). It worked fine until now.
>
> This is the code:
>
> def index_gestor():
> titulares = db(db.auth_user.tipo_usuario=='Titular')
> form = SQLFORM.factory(
> Field('socio', db.auth_user, requires = IS_IN_DB(titulares,'
> auth_user.id','%(last_name)s'+', '+ '%(first_name)s'+' - '+
> '%(f_numero_socio)s',sort=True)),
> Field('consulta', type='string', requires =
> IS_IN_SET(['Familiares', 'Movimientos','Pedidos']),default='Familiares'),
> buttons=[TAG.button('CONSULTAR',_type="submit", _class="btn
> btn-warning btn-large")],
> table_name='seleccion_socios')
> if form.process().accepted:
> if form.vars.consulta == 'Familiares':
>
>
> redirect(URL("gestor","familiares_socio_manage.html",args=[form.vars.socio],user_signature=True))
> elif form.vars.consulta == 'Movimientos':
>
>
> redirect(URL("gestor","cuenta_socio_manage.html",args=[form.vars.socio],user_signature=True))
> elif form.vars.consulta == 'Pedidos':
>
>
> redirect(URL("gestor_productos","pedidos_por_socio",args=[form.vars.socio],user_signature=True))
>
> return locals()
>
> The problem is with the line Field('socio', db.auth_user, requires =
> IS_IN_DB(titulares,'auth_user.id','%(last_name)s'+', '+
> '%(first_name)s'+' - '+ '%(f_numero_socio)s',sort=True)),
>
> This is the ticket:
>
> Traceback (most recent call last): File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/restricted.py",
>
> line 227
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Frestricted.py&line=227>,
>
> in restricted exec ccode in environment File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/applications/CAS/controllers/gestor.py",
>
> line 400
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fapplications%2FCAS%2Fcontrollers%2Fgestor.py&line=400>,
>
> in <module> File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/globals.py",
>
> line 412
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fglobals.py&line=412>,
>
> in <lambda> self._caller = lambda f: f() File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/tools.py",
>
> line 3769
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Ftools.py&line=3769>,
>
> in f return action(*a, **b) File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/applications/CAS/controllers/gestor.py",
>
> line 12
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fapplications%2FCAS%2Fcontrollers%2Fgestor.py&line=12>,
>
> in index_gestor table_name='seleccion_socios') File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/sqlhtml.py",
>
> line 1771
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fsqlhtml.py&line=1771>,
>
> in factory **attributes) File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/sqlhtml.py",
>
> line 1259
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fsqlhtml.py&line=1259>,
>
> in __init__ inp = self.widgets.options.widget(field, default) File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/sqlhtml.py",
>
> line 313
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fsqlhtml.py&line=313>,
>
> in widget options = requires[0].options() File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/validators.py",
>
> line 586
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fvalidators.py&line=586>,
>
> in options self.build_set() File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/validators.py",
>
> line 572
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fvalidators.py&line=572>,
>
> in build_set records = self.dbset(table).select(*fields, **dd) File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/packages/dal/pydal/objects.py",
>
> line 2026
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fpackages%2Fdal%2Fpydal%2Fobjects.py&line=2026>,
>
> in select return adapter.select(self.query,fields,attributes) File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/packages/dal/pydal/adapters/google_adapters.py",
>
> line 484
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fpackages%2Fdal%2Fpydal%2Fadapters%2Fgoogle_adapters.py&line=484>,
>
> in select (items, tablename, fields) =
> self.select_raw(query,fields,attributes) File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/packages/dal/pydal/adapters/google_adapters.py",
>
> line 376
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fpackages%2Fdal%2Fpydal%2Fadapters%2Fgoogle_adapters.py&line=376>,
>
> in select_raw filters = self.expand(query) File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/packages/dal/pydal/adapters/google_adapters.py",
>
> line 237
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fpackages%2Fdal%2Fpydal%2Fadapters%2Fgoogle_adapters.py&line=237>,
>
> in expand return expression.op(expression.first, expression.second) File
> "/base/data/home/apps/s~clubatletismosada/2.386403586504283664/gluon/packages/dal/pydal/adapters/google_adapters.py",
>
> line 257
> <https://console.developers.google.com/project/clubatletismosada/clouddev/debug/resolve_location?appModule=default&appVersion=2×tampNanos=1439465598003000000&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~clubatletismosada%2F2.386403586504283664%2Fgluon%2Fpackages%2Fdal%2Fpydal%2Fadapters%2Fgoogle_adapters.py&line=257>,
>
> in AND return ndb.AND(first, second) File
> "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/query.py",
>
> line 558, in __new__ ' received a non-Node instance %r' % node) TypeError:
> ConjunctionNode() expects Node instances as arguments; received a non-Node
> instance None
>
>
> This is the first hint I've found:
>
>
> https://cloud.google.com/appengine/docs/python/refdocs/modules/google/appengine/ext/ndb/query
>
> Any help would be appreciated.
>
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.