Implement ``get_image_model`` for image signals

pull/3379/head
Mike Dingjan 2017-02-10 17:06:08 +01:00 zatwierdzone przez Matt Westcott
rodzic e83d563e30
commit 361df2035e
2 zmienionych plików z 35 dodań i 1 usunięć

Wyświetl plik

@ -3,7 +3,7 @@ from __future__ import absolute_import, unicode_literals
from django.conf import settings
from django.db.models.signals import post_delete, pre_save
from wagtail.wagtailimages.models import Image, Rendition
from wagtail.wagtailimages import get_image_model
def post_delete_file_cleanup(instance, **kwargs):
@ -20,6 +20,9 @@ def pre_save_image_feature_detection(instance, **kwargs):
def register_signal_handlers():
Image = get_image_model()
Rendition = Image.get_rendition_model()
pre_save.connect(pre_save_image_feature_detection, sender=Image)
post_delete.connect(post_delete_file_cleanup, sender=Image)
post_delete.connect(post_delete_file_cleanup, sender=Rendition)

Wyświetl plik

@ -0,0 +1,31 @@
from __future__ import absolute_import, unicode_literals
import os
from django.test import TestCase, override_settings
from wagtail.wagtailimages import get_image_model, signal_handlers
from wagtail.wagtailimages.tests.utils import get_test_image_file
class TestSignalHandlers(TestCase):
def test_image_signal_handlers(self):
image = get_image_model().objects.create(title="Test Image", file=get_test_image_file())
image_path = image.file.path
image.delete()
self.assertFalse(os.path.exists(image_path))
@override_settings(WAGTAILIMAGES_IMAGE_MODEL='tests.CustomImage')
def test_custom_image_signal_handlers(self):
#: Sadly signal receivers only get connected when starting django.
#: We will re-attach them here to mimic the django startup behavior
#: and get the signals connected to our custom model..
signal_handlers.register_signal_handlers()
image = get_image_model().objects.create(title="Test CustomImage", file=get_test_image_file())
image_path = image.file.path
image.delete()
self.assertFalse(os.path.exists(image_path))