represent takes always two values. You have represent=lambda row: row.strftime('%H:%M')),
but you should have represent=lambda value,row: value.strftime('%H:%M')), On Wednesday, 12 September 2012 05:02:28 UTC-5, Gerd wrote: > > Hi! > > First: This is my first try to build a "real" application in web2py and > python, i'm new to both but like it very much (i'm coming from bash/awk/sed) > > I receive following error when trying to export a SQLFORM.grid to TSV > (Excel compatible), but CSV works > > Traceback (most recent call last): > File "/home/gniemetz/webapps/web2py/web2py/gluon/restricted.py", line 209, > in restricted > exec ccode in environment > File > "/home/gniemetz/webapps/web2py/web2py/applications/tauchbuch/controllers/default.py" > > <https://web2py.niemetz.it/admin/default/edit/tauchbuch/controllers/default.py>, > line 78, in <module> > File "/home/gniemetz/webapps/web2py/web2py/gluon/globals.py", line 185, in > <lambda> > self._caller = lambda f: f() > File "/home/gniemetz/webapps/web2py/web2py/gluon/tools.py", line 2783, in f > return action(*a, **b) > File > "/home/gniemetz/webapps/web2py/web2py/applications/tauchbuch/controllers/default.py" > > <https://web2py.niemetz.it/admin/default/edit/tauchbuch/controllers/default.py>, > line 22, in index > grid = > SQLFORM.grid(db.Logbuch,fields=[db.Logbuch.Datum,db.Logbuch.Kurs,db.Logbuch.Thema,db.Logbuch.Kommentar],maxtextlength=50) > File "/home/gniemetz/webapps/web2py/web2py/gluon/sqlhtml.py", line 1858, in > grid > raise HTTP(200, oExp.export(),**response.headers) > File "/home/gniemetz/webapps/web2py/web2py/gluon/sqlhtml.py", line 2627, in > export > records = self.represented() > File "/home/gniemetz/webapps/web2py/web2py/gluon/sqlhtml.py", line 2594, in > represented > value = field.represent(value, record) > TypeError: <lambda>() takes exactly 1 argument (2 given) > > > This is my model (a bit complicated, maybe there's room for improvement) > > db.define_table('KFZ', > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Auto','string',length=30,label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Car')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Kennzeichen','string',length=10,label=T > <https://web2py.niemetz.it/examples/global/vars/T>('License plate')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('KM','integer',label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Mileage')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('gueltig_bis','date',label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Expired')), > format='%(Auto)s %(Kennzeichen)s' > ) > > db.define_table('Themen', > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Thema','string',length=30,label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Topic')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('gueltig_bis','date',label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Expired')), > format='%(Thema)s' > ) > > db.define_table('KM_Gelder', > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Tarif','decimal(3,2)',requires=IS_DECIMAL_IN_RANGE > > <https://web2py.niemetz.it/examples/global/vars/IS_DECIMAL_IN_RANGE>(dot=','),label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Mileage Cost')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('gueltig_bis','date',label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Expired')), > format=lambda row: str('%(Tarif)s' % row if row else > '').replace('.',',').replace(',00',',-') > ) > > from datetime import datetime, date > query = ((db.KM_Gelder.gueltig_bis == None)) > db.define_table('Logbuch', > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Datum','date',requires=IS_DATE > > <https://web2py.niemetz.it/examples/global/vars/IS_DATE>(format='%Y-%m-%d'),label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Date')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Kurs','string',length=50,label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Course')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Beginn','time',requires=IS_TIME > <https://web2py.niemetz.it/examples/global/vars/IS_TIME>(),label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Start'),represent=lambda > row: row.strftime('%H:%M')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Ende','time',requires=IS_TIME > <https://web2py.niemetz.it/examples/global/vars/IS_TIME>(),label=T > <https://web2py.niemetz.it/examples/global/vars/T>('End'),represent=lambda > row: row.strftime('%H:%M')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Thema',db.Themen,label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Topic')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Teilnehmer','integer',label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Number of > participants')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Kosten','decimal(7,2)',requires=IS_DECIMAL_IN_RANGE > > <https://web2py.niemetz.it/examples/global/vars/IS_DECIMAL_IN_RANGE>(dot=','),label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Cost of > participants'),represent=lambda row: str('€ %s' % row if row else > '').replace('.',',').replace(',00',',-')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Erloese','decimal(7,2)',requires=IS_DECIMAL_IN_RANGE > > <https://web2py.niemetz.it/examples/global/vars/IS_DECIMAL_IN_RANGE>(dot=','),label=T > > <https://web2py.niemetz.it/examples/global/vars/T>('Revenues'),compute=lambda > row: row['Teilnehmer']*row['Kosten'],represent=lambda row: SPAN > <https://web2py.niemetz.it/examples/global/vars/SPAN>(str('€ %s' % row if row > else '').replace('.',',').replace(',00',',-'),_style='color: green')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('KM_Beginn','integer',label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Mileage > Start'),represent=lambda row: str('{:,} > km'.format(row)).replace(',','*').replace('.',',').replace('*','.')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('KM_Ende','integer',label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Mileage > End'),represent=lambda row: str('{:,} > km'.format(row)).replace(',','*').replace('.',',').replace('*','.')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Sum_Zeit','time',label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Hours > Summary'),compute=lambda row: > datetime.combine(date.today(),row['Ende'])-datetime.combine(date.today(),row['Beginn']),requires=IS_TIME > <https://web2py.niemetz.it/examples/global/vars/IS_TIME>(),represent=lambda > row: row.strftime('%H:%M')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Sum_KM','integer',label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Mileage > Summary'),compute=lambda row: > row['KM_Ende']-row['KM_Beginn'],represent=lambda row: str('{:,} > km'.format(row)).replace(',','*').replace('.',',').replace('*','.')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('KM_Geld',db.KM_Gelder,label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Mileage > Cost'),requires=IS_IN_DB > <https://web2py.niemetz.it/examples/global/vars/IS_IN_DB>(db(query),'KM_Gelder.id',db.KM_Gelder._format),represent=lambda > id: str('€ %(Tarif)s' % db.KM_Gelder(id) if db.KM_Gelder(id) else > '').replace('.',',').replace(',00',',-')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Autokosten','decimal(7,2)',label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Mileage Summary > Cost'),compute=lambda row: > (row['KM_Ende']-row['KM_Beginn'])*db.KM_Gelder(row['KM_Geld']).Tarif,represent=lambda > row: SPAN <https://web2py.niemetz.it/examples/global/vars/SPAN>(str('€ %s' % > row if row else '').replace('.',',').replace(',00',',-'),_style='color: > red')), > Field > <https://web2py.niemetz.it/examples/global/vars/Field>('Kommentar','string',length=200,label=T > <https://web2py.niemetz.it/examples/global/vars/T>('Comment')) > ) > > db.Logbuch.id.readable=db.Logbuch.id.writeable=False > > > and this is the controller > > @auth.requires_login() > def index(): > #response.flash = T('Welcome to your divebook!') > grid = SQLFORM > <https://web2py.niemetz.it/examples/global/vars/SQLFORM>.grid(db.Logbuch,fields=[db.Logbuch.Datum,db.Logbuch.Kurs,db.Logbuch.Thema,db.Logbuch.Kommentar],maxtextlength=50) > return locals() > > > What's going wrong here? > > Thanks for your efforts > regards > Gerd > > > > > --