Any chance you can tell us which versions broke it?
On Feb 12, 8:30 am, Alan Etkin <[email protected]> wrote: > I have pulled the last mercurial version and get this new exception in > a query. This behavior is new, older versions of web2py don't return > this error: > > Note: the app is a wxPython application that queries a PostgreSQL > database with web2py and gui2py:http://code.google.com/p/gestionlibre.gui > > .... > File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 469, in > options > self.options() # > File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 469, in > options > self.options() # > File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 469, in > options > self.options() # > File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 469, in > options > self.options() # > File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 469, in > options > self.options() # > File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 463, in > options > self.build_set() > File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 451, in > build_set > records = self.dbset.select(*fields, **dd) > File "/home/alan/web2py/web2py-hg/gluon/dal.py", line 7379, in > select > return adapter.select(self.query,fields,attributes) > File "/home/alan/web2py/web2py-hg/gluon/dal.py", line 1301, in > select > sql = self._select(query, fields, attributes) > File "/home/alan/web2py/web2py-hg/gluon/dal.py", line 1265, in > _select > sql_t = ', '.join(alias(t) for t in tablenames) > File "/home/alan/web2py/web2py-hg/gluon/dal.py", line 1265, in > <genexpr> > sql_t = ', '.join(alias(t) for t in tablenames) > RuntimeError: maximum recursion depth exceeded while calling a Python > object > > Here is a part of the model wich I suppose is relevant > > # Source Document (transactions records) > db.define_table('operation', > Field('operation_id', 'id', label = T("id")), > Field('code', unique = True, label = T("code")), > Field('description', label = T("description")), > Field('customer_id', 'reference customer', label = > T("customer")), # reference > Field('supplier_id', 'reference supplier', label = > T("supplier")), # reference > Field('detail', type='string', length=60, > comment=T('Observations'), label = T("detail")), > Field('payment_terms_id', 'reference payment_terms', > comment=T('Terms of payment'), label = T("payment terms")), # > reference > Field('term', type='string', length=50, label = T("term")), > Field('amount', type='double', label = T("amount")), > Field('balance', type='double', label = T("balance")), > Field('posted', type='datetime', default = now, label = > T("posted")), > Field('issue', type='datetime', label = T("issue")), > Field('document_id', 'reference document', comment=T('Points > to order / invoice / packingslips'), label = T("document")), # > reference > Field('branch', label = T("branch")), > Field('number', type='integer', default=0, label = > T("number")), > Field('due_date', type='datetime', label = T("due date")), > Field('type', type='string', length=1, > requires=IS_IN_SET({'T': 'Stock','S': 'Sales','P': 'Purchases'}), > label = T("type")), # reference? types: T: Stock, S: Sales, P: > Purchases > Field('canceled', type='boolean', default=False, > comment=T('False if deferred payment (df), True if paid with cash, ch > (check) or current account'), label = T("canceled")), > Field('processed', type='boolean', default=False, label = > T("processed")), > Field('voided', type='boolean', default=False, label = > T("voided")), # ¿anulado? > Field('fund_id', 'reference fund', label = T("fund")), # > reference > Field('cost_center_id', 'reference cost_center', label = > T("cost center")), # reference > Field('module', type='integer', default=0, > comment=T('Referenced table'), label = T("module")), # reference? > Field('observations', type='string', length=50, label = > T("observations")), > Field('cancellation', type='boolean', default=False, label = > T("cancellation")), > Field('avoidance', type='boolean', default=False, label = > T("avoidance")), # ¿anulación? > Field('file_id', 'reference file', label = T("file")), # > ¿legajo? # reference > Field('payroll_id', 'reference payroll', label = > T("payroll")), # reference > Field('user_id', 'reference auth_user', label = T("user")), # > reference > Field('hour', type='datetime', label = T("hour")), > Field('replicated', type='datetime', label = T("replicated")), > Field('subcustomer_id', 'reference subcustomer', label = > T("subcustomer")), # reference > Field('salesperson_id', 'reference salesperson', label = > T("salesperson")), # reference > Field('printed', type='boolean', default=False, label = > T("printed")), > Field('jurisdiction_id', 'reference jurisdiction', label = > T("jurisdiction")), # reference > Field('replica', type='boolean', default=False, label = > T("replica")), > format=operation_format, > sequence_name = "operation_operation_id_Seq", > migrate=migrate, fake_migrate=fake_migrate) > > Is it possible that a change in the framework code can be producing > the error in the app query?

