Hello guys, I'm experiencing an unexpected behavior using grid form with
selectable option, need help.
I have a temporal table 'rogue_rows' in a database 'dyn_db'. This table
includes rows from different tables of another database. Please refer to
the controller index() code:
def index():
dyn_db.rogue_rows.truncate()
# truncate table each time index is called
for table in tables_list : # table list contains needed tables.
query=(cam_db[table].trunk==0) & (cam_db[table].rogue==1)
rows =
cam_db(query).select() #
extract needed rows from current table
for row in rows :
# insert each row in temporal table
dyn_db.rogue_rows.insert(table_name=table,
node_name=row.node_name,
mac=row.mac,
port=row.port,
)
grid=SQLFORM.grid(dyn_db.rogue_rows,
# convey dyn_db.rogue_rows table to the grid form
fields=[dyn_db.rogue_rows.node_name,
dyn_db.rogue_rows.mac,
dyn_db.rogue_rows.port],
selectable=lambda ids :
allow_mac(ids) # add checkboxes to each row, hand over
selected row ids to function allow_macs()
)
return dict(grid=grid)
The index() function works great, it displays all the rows from the
different tables. When I check all the boxes, let's say there were 5 rows,
and click submit - grid calls allow_macs() with ids = [1,2,3,4,5]. Until
now, it was all fine. Please refer to allow_mac() func:
def allow_mac(ids) :
for id in ids : # iterate
over all checked row ids
query = dyn_db.rogue_rows.id == id
rows = dyn_db(query).select() # select each
selected row
for row in rows :
cam_db(cam_db[row.table_name].mac==row.mac).update(rogue=0)
# update rows in main tables
The problem is when I check all the boxes and click submit, only top rows
from one table are updated, then I have to check remained rows again and
submit them as well - another top rows from another table will be updated
etc... I would like them to be updated all at once...
I mentioned that if I comment truncate string, then it works but with a
flaw - if I refresh page the rows in temporal page duplicate each time. Any
ideas ??
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.