I just got it! the problem is in definition of headers, when headers=None this works well.
I am going to patch for this. 2010/12/9 Bruno Rocha <[email protected]> > Note that when I do: > > print sqlrows.colnames in sqlhtml.py I get: > > ['task.id', 'task.title', 'task.story', 'task.type', 'task.body', > 'task.priority', 'task.assigned_to', 'task.estimated_hours', > 'task.spent_hours', 'task.status', 'task.created_on', 'task.created_by', > 'task.updated_on', 'task.updated_by', 'task.*new_column*'] > > 2010/12/9 Bruno Rocha <[email protected]> > > This: >> >> <code> >> class ExtraField: >> def new_column(self): >> if self.task.id==1: >> return A('some_action_link', >> _href=URL(f='default', >> args=[self.task.id])) >> else: >> return A('great thing', _href='http://www.web2py.com') >> >> >> def test(): >> rows=db(db.task).select() >> rows.colnames.append('task.new_column') >> rows.setvirtualfields(task=ExtraField()) >> table=SQLTABLE(rows) >> return dict(table=table) >> >> </code> >> >> Is not working raising this error: >> >> Traceback (most recent call last): >> File "/Users/brunomac/web2py/gluon/restricted.py", line 188, in restricted >> >> >> exec ccode in environment >> File "/Users/brunomac/web2py/applications/satlite/controllers/teste.py" >> <http://127.0.0.1:8000/admin/default/edit/satlite/controllers/teste.py>, >> line 71, in <module> >> >> >> File "/Users/brunomac/web2py/gluon/globals.py", line 96, in <lambda> >> >> >> self._caller = lambda f: f() >> >> >> File "/Users/brunomac/web2py/applications/satlite/controllers/teste.py" >> <http://127.0.0.1:8000/admin/default/edit/satlite/controllers/teste.py>, >> line 20, in test >> >> >> table=SQLTABLE(rows) >> File "/Users/brunomac/web2py/gluon/sqlhtml.py", line 1241, in __init__ >> >> >> File "/Users/brunomac/web2py/gluon/sql.py", line 3787, in __str__ >> >> >> self.export_to_csv_file(s) >> File "/Users/brunomac/web2py/gluon/sql.py", line 3771, in >> export_to_csv_file >> >> >> field = self.db[t][f] >> >> >> File "/Users/brunomac/web2py/gluon/sql.py", line 1668, in __getitem__ >> >> >> return dict.__getitem__(self, str(key)) >> >> KeyError: 'new_column' >> >> >> >> >> 2010/12/9 Ivan Matveev <[email protected]> >> >> You can put anything in SQLTABLE by modifying Rows object with >>> rows.setvirtualfields. >>> See this post >>> >>> http://groups.google.com/group/web2py/browse_thread/thread/826a37f56c26d689 >>> >> >> >> >> -- >> >> Bruno Rocha >> http://about.me/rochacbruno/bio >> > > > > -- > > Bruno Rocha > http://about.me/rochacbruno/bio > -- Bruno Rocha http://about.me/rochacbruno/bio

