Hello, I think it's more a matter of python language, contenido.id is long type then self.args[0] in 'any string' raise an exception because, as the message says :
'in ' requires string as left operand, not long You can do args=['%s' % contenido.id, .... or args=[str(contenido.id), .... Dont know why in others installed apps works, is really weird El lunes, 3 de septiembre de 2018, 0:54:32 (UTC-3), Lisandro escribió: > > I have the same app installed several times within a web2py instance > (running version 2.16.1-stable+timestamp.2017.11.14.05.54.25). > > In some of them, this sentence: > > URL(c='default', f=f, args=[contenido.id, contenido.slug], extension='', > scheme=True, host=current.CONFIG.dominio) > > ... throws this traceback error: > > Traceback (most recent call last): > File "/var/www/medios/gluon/scheduler.py", line 501, in executor result = > dumps(_function(*args, **vars)) > File "applications/pescaregional/compiled/models.db.py", line 519, in > newsletter > File "applications/pescaregional/modules/globales.py", line 938, in > enviar_newsletter 'url_noticia': noticia.url() + utm_vars, > File "/var/www/medios/gluon/packages/dal/pydal/objects.py", line 2407, in > __call__ return self.method(self.row, *args, **kwargs) > File "applications/pescaregional/compiled/models.db.py", line 295, in > File "applications/pescaregional/modules/virtual_methods.py", line 248, in > contenido_url return URL(c='default', f=f, args=[contenido.id, contenido. > slug], extension='', scheme=True, host=current.CONFIG.dominio) if f else > None > File "/var/www/medios/gluon/html.py", line 391, in URL args, other, scheme > , host, port, language=language) > File "/var/www/medios/gluon/rewrite.py", line 197, in url_out function, > args, other, scheme, host, port, language) > File "/var/www/medios/gluon/rewrite.py", line 1366, in map_url_out return > map.acf() > File "/var/www/medios/gluon/rewrite.py", line 1292, in acf self.omit_acf() # > try to omit a/c/f > File "/var/www/medios/gluon/rewrite.py", line 1241, in omit_acf if self. > args[0] in self.functions or self.args[0] in self.controllers or self.args > [0] in applications: TypeError: 'in ' requires string as left operand, not > long > > > > The problem is solved changing the sentence with this: > > URL(c='default', f=f, args=['%s' % contenido.id, '%s' % contenido.slug], > extension='', scheme=True, host=current.CONFIG.dominio) > > ... notice that the args are converted to strings. > > But the weird part is that *the error only happens in some of the > installed apps; and, remember, it's the exact same app installed several > times*. > > First I thought it had something to do with the values stored at > "contenido", which is a row from a table. But it happens with any row. > > I'm using PostgreSQL 9.3. I've checked the databases' enconding and they > all have the same one. I also checked the "contenido" table definition in a > couple of dbs (one corresponding to an app that presents the error, and > other that doesn't), and they are exactly the same. > > What could be the difference that makes gluon/rewrite.py throw the error > in some of the apps? > -- 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.

