Dear All,
In one of my views, I am using a SQLForm.grid object. The grid is fed with
a table that has two computed fields and the query needs a LEFT JOIN to
another table.
The grid also use 'Links' to compute a field (create an column with an IMG
element depending on a column's value)
Everything is OK, except when I mix computed fields and left join.
Left join alone is OK
Computed field alone is OK
Here is my model
db('message',
Field('address', 'text'),
Field('date', 'datetime', required=True),
Field('flags', 'integer'),
Field('msgaccount', 'text'),
Field('msgflags', 'integer'),
Field('msghandle', 'text'),
Field('ismsg', 'integer'),
Field('text', 'text', required=True),
Field('cfrom', 'text', compute=lambda r: computeCFrom(r)),
Field('cflags', 'integer', compute=lambda r: computeCFlags(r)))
Here is my grid
grid = SQLFORM.grid(dbMsg.message,
fields=[dbMsg.message.address,
dbMsg.message.date, dbMsg.message.flags,
dbMsg.message.msgaccount,
dbMsg.message.msgflags,
dbMsg.message.msghandle,
dbMsg.message.ismsg, dbMsg.message.text,
dbMsg.message.cfrom,
dbMsg.message.cflags,dbMsg.address.description ],
field_id=dbMsg.message.id,
#left=dbMsg.address.on(dbMsg.message.cfrom==dbMsg.address.address),
orderby=~dbMsg.message.date,
maxtextlengths={'message.date':5,
'message.cfrom':20, 'address.description':20, 'message.text':160},
headers={'message.cfrom' : T('From')},
editable=False,
create=False,
details=False,
deletable=False,
csv=False,
selectable=lambda ids: delete(ids),
selectable_text=T('Delete'),
links=[dict(header=T('Flags'), body=lambda row:
formatFlag(row.cflags, row.ismsg))],
ui='jquery-ui')
The 'links' attribute is working with the left attribute commented out.
When removing the comment on the 'left' attribute, I do receive at runtime
ERROR - Exception occurred in SQLFORM.grid : 'Row' object has no attribute
'cflags'
I am new to web2py, maybe I missed something obvious with computed fields
and grid.
Thanks for your help
Seb
--