Props to Richard Vezina for posting a similar technique.  This is
built on his post

>From the book we know that, "Components' objects can be referenced via
their position, and helpers act as lists with respect to their
components."

A little archaeology in the source code tells us that SQLFORM.grid
emits a DIV object.  When there's an index table involved, the DIV has
three components: a DIV, a DIV containing a TABLE and another DIV.

 # first we get the grid
 grid = SQLFORM.grid(query)

    # examine the div at the top of the grid div
    # for index lists, this div is of the class 'console',
    # so look for 'console' near the start of the div
    # there is CERTAINLY a better way to detect an index table, but
this works
    if 'console' in str(grid[0])[0:35]:
        ## grid[1][0][1] is the DIV, TABLE and TBODY
        ## so we iterate over TRs in the table body
        for row in grid[1][0][1]:
            ## TR acts like a list, so we use some Python list fu
            row.insert(-1, 'foo')
    return dict(grid=grid)

Done.  Haven't cleaned up the table head yet, but it should be
similar.

Reply via email to