So def update_images(): rows=db(db.image).select() for row in rows: row.update(file=row.file) db.commit()
does work. I wrote (title=row.title) as I was a little loath to write (file=row.file) as I was not sure if this was okay with 'upload' fields. Clearly it is. Thinking about it more, a cleaner way of doing it is: def update_images(): rows=db(db.image).select() for row in rows: row.update(thumb=THUMB(row['file']) db.commit() and bypass the compute altogether. HOWEVER I still have the strange situation that the compute gets executed when one creates a new record, but does not get executed when one edits a record, even when one changes the image which is stored in 'file'. the editing is done by clicking the 'edit' link in SQLFORM.grid. Peter On Friday, May 25, 2012 6:50:33 PM UTC+1, peter wrote: > > I am using web2py 1.99.7 > > I have a compute as > > db.image.thumb.compute=lambda r:THUMB(r['file']) > > > I update the whole database > > def update_images(): > rows=db(db.image).select() > for row in rows: > row.update(title=row.title) > db.commit() > > > Yet, the computes have not occurred. > > Similarly if I edit a record and submit, no compute. Yet if I add a > record, the compute does take place. > > Anyone any ideas why? > > Thanks > Peter >