''' thumbnailer = get_thumbnailer(instance.image) thumbnailer.delete_thumbnails() instance.image.delete(save=False) @receiver(pre_save, sender=ExerciseImage) def delete_exercise_image_on_update(sender, instance, **kwargs): ''' Delete the corresponding image from the filesystem when the an ExerciseImage object was changed ''' if not instance.pk: return False try: old_file = ExerciseImage.objects.get(pk=instance.pk).image except ExerciseImage.DoesNotExist: return False new_file = instance.image if not old_file == new_file: thumbnailer = get_thumbnailer(instance.image) thumbnailer.delete_thumbnails() instance.image.delete(save=False) # Generate thumbnails when uploading a new image saved_file.connect(generate_aliases)
from django.db import models from easy_thumbnails.signals import saved_file from easy_thumbnails.signal_handlers import generate_aliases_global # Create your models here. class Picture(models.Model): title = models.CharField(max_length=80) path = models.ImageField(upload_to="gallery/") uploaded_on = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title class Meta: ordering = ['-uploaded_on'] saved_file.connect(generate_aliases_global)
from django.db import models from easy_thumbnails.signals import saved_file from easy_thumbnails.signal_handlers import generate_aliases_global class TimestampedModel(models.Model): creation_timestamp = models.DateTimeField(auto_now_add=True) last_modified = models.DateTimeField(auto_now=True) class Meta: abstract = True #to pre-generate the thumbnails globally saved_file.connect(generate_aliases_global, dispatch_uid='pre-generation-of-thumbnails')
# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.conf import settings from django_cleanup.signals import cleanup_post_delete from django_cleanup.signals import cleanup_pre_delete from easy_thumbnails.files import get_thumbnailer from easy_thumbnails.signals import saved_file from easy_thumbnails.signal_handlers import generate_aliases_global import shutil import os saved_file.connect(generate_aliases_global) def delete_thumbnails(**kwargs): kwargs['file'].old_path = kwargs['file'].path get_thumbnailer(kwargs['file']).delete_thumbnails() cleanup_pre_delete.connect(delete_thumbnails) def cleanup_empty_dirs(**kwargs): # initially set first dir path of file ... path = os.path.dirname(kwargs['file'].old_path) # ... and remove all empty parent directories while True: if path == settings.MEDIA_ROOT: break if len(os.listdir(path)) == 0:
from django.core.exceptions import ValidationError from django.db import models from easy_thumbnails.signals import saved_file from easy_thumbnails.signal_handlers import generate_aliases from base.overrides import overrides from content import url_scheme from content.models import ContentItem, Note from content.slug import SlugLogicMixin, SlugFieldMixin from content.trevor import render_trevor, put_text_in_trevor from songs.lyrics import contain_extra_chords from songs.lyrics import parse_lyrics from songs.transpose import transpose_lyrics saved_file.connect(generate_aliases) class Artist(SlugFieldMixin): HELP_NAME = 'Imię i nazwisko wykonawcy lub nazwa zespołu.' HELP_FEATURED = 'Czy podmiot ma figurować w spisie treści.' HELP_CATEGORY = 'Kategoria w spisie treści śpiewnika.' HELP_WEBSITE = 'Strona internetowa artysty.' HELP_IMAGE = 'Ilustracja - zdjęcie artysty.' HELP_IMAGE_URL = 'Źródło zdjęcia (adres www).' HELP_IMAGE_AUTHOR = 'Źródło zdjęcia (autor).' HELP_DESCRIPTION = 'Krótki opis podmiotu w stylu encyklopedycznym.' HELP_BORN_ON = 'Data urodzin.' HELP_DIED_ON = 'Data śmierci.' CAT_TEXTER = 1