Hi,

For my application I created a custom ImageField (code below) as I need to 
automatically generate a few different sets of thumbnails. I read the posts 
on the requests for Django to delete old images when uploading, and was 
blown away to see the request for that feature turned down. I still don't 
know why anyone would want the old images that you have zero access to 
(from ui) laying around when you change to a new one. 

Anyway, this is my attempt to solve that oversight for my current 
application. First I tried calling the ImageField.delete if on an instance 
of the old image however that deletes the old and doesn't save the updated 
new image. So I created a new method that only removes. (This code is 
currently working how I need it to work)

On to the code:
fields.py
class ProfileThumbnailImageFieldFile(ImageFieldFile):
    # code left out for creating the thumbnails
    def remove_old_files(self):
        if os.path.exists(self.path):
            os.remove(self.path)
        if os.path.exists(self.thumb_path_64x64):
            os.remove(self.thumb_path_64x64)
class ThumbnailImageField(ImageField):
    attr_class = ThumbnailImageFieldFile # This class definition left out 
and is overridden for this example in __init__ when creating the field

models.py
class CustomUser(AbstractBaseUser):
    picture = ThumbnailImageField(upload_to='upload_path', 
attr_class=ProfileThumbnailImageFieldFile)
  
    def __init__(self, *args, **kwargs):
        super(CustomUser, self).__init__(*args, **kwargs)
        # Store a reference of the original picture to allow for removing 
it alter if updated.
        if self.picture:
            self._original_picture = self.picture
        else:
            self._original_picture = None
    def save(self, *args, **kwargs):
        if self._original_picture:
            if self.picture and self.picture != self._original_picture:
                self._original_picture.remove_old_files()
        super(CustomUser, self).save(*args, **kwargs)


What has been some other ways to solve this kind of problem? 
   

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/F_ESNNAU_BAJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to