Hi!!

I have 3 computed fields that call a "resize_image" function to make 3 
versions of a uploaded image.
The definition of one of these fields:

Field('foto_portada_detalle', 'upload',
uploadfolder=request.folder+'static/uploads/actividades',
compute=lambda r: resize_image(r['foto_portada'], (200,200), 'detalle', 
'actividades'),
autodelete=True,
readable=False)


When I delete the record, all is ok and the images are deleted but when I 
update the record with another image one good thing occur: all the other 3 
versions get updated BUT one bad thing occur too: the old images stay on 
the disk although "autodelete=True"

I think that the resize_image function need to manage the delete of old 
images but I don't know how. can you help me? Thank a lot!

The function:

def resize_image(image, size, path, folder, rotate=0):
    import os.path

    from PIL import Image, ImageOps

    if image:
        try:
            img = Image.open('%sstatic/uploads/%s/%s' % (request.folder, 
folder, image))
            img = img.convert("RGB")
            img = ImageOps.fit(img, size, Image.ANTIALIAS, centering=(0.5, 
0.5))
            #img.resize(size, Image.ANTIALIAS)
            img = img.rotate(rotate)
            root, ext = os.path.splitext(image)
            filename = '%s_%s%s' %(root, path, ext)
            img.save('%sstatic/uploads/%s/%s' % (request.folder, folder, 
filename))
            return filename
        except Exception, e:
            return e
    else:
        return None

Reply via email to