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
>

Reply via email to