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

-- 



Reply via email to