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
>