Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

receivers.py 1.0KB

1234567891011121314151617181920212223242526272829303132
  1. # -*- coding: utf-8 -*-
  2. from django.db.models import get_model
  3. from django.db import models
  4. from django.db.models.signals import post_delete
  5. from sorl import thumbnail
  6. from sorl.thumbnail.helpers import ThumbnailError
  7. ProductImage = get_model('catalogue', 'ProductImage')
  8. Category = get_model('catalogue', 'Category')
  9. def delete_image_files(sender, instance, **kwargs):
  10. """
  11. Deletes the original image, created thumbnails, and any entries
  12. in sorl's key-value store.
  13. """
  14. image_fields = (models.ImageField, thumbnail.ImageField)
  15. for field in instance._meta.fields:
  16. if isinstance(field, image_fields):
  17. # Make Django return ImageFieldFile instead of ImageField
  18. fieldfile = getattr(instance, field.name)
  19. try:
  20. thumbnail.delete(fieldfile)
  21. except ThumbnailError:
  22. pass
  23. # connect for all models with ImageFields - add as needed
  24. models_with_images = [ProductImage, Category]
  25. for sender in models_with_images:
  26. post_delete.connect(delete_image_files, sender=sender)