Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove all thumbnails generated with easy-thumbnails Django App

I am using easy-thumbnails in my Django 1.5 project to generate thumbnail images.

I have been using several different sizes for thumbnails for testing, but now I would like to clear all thumbnails from my filesystem and from the easy-thumbnails database entries. Over time I created several different sizes of many images and I would like to remove those now.

My intention is to start with a clean slate and to remove all thumbnail images. I could not find out how to do that.

like image 504
yellowcap Avatar asked Apr 25 '13 17:04

yellowcap


2 Answers

Just had the same problem.

Given:

class MyModel(Model):
    image = ThumbnailerImageField()

You can delete all thumbnails with:

for m in MyModel.objects.all():
    m.image.delete_thumbnails()

If you instead have:

class MyModel(Model):
    image = ImageField()

Then you should use:

from easy_thumbnails.files import get_thumbnailer

for m in MyModel.objects.all():
    thumbnailer = get_thumbnailer(m.image)
    thumbnailer.delete_thumbnails()
like image 199
knite Avatar answered Sep 20 '22 18:09

knite


I have created a Picture model in which I added a method, as follows

from easy_thumbnails.models import Source, Thumbnail
def clean_thumbnail(self):
    if self.image:
        sources = Source.objects.filter(name=self.image.name)
        if sources.exists():
            for thumb in Thumbnail.objects.filter(source=sources[0]):
                try:
                    os.remove(os.path.join(settings.MEDIA_ROOT, thumb.name))
                    thumb.delete()
                except Exception, e:
                    logger.warning(e)

And it works like a charm.

like image 5
Steve K Avatar answered Sep 22 '22 18:09

Steve K