Remove Django 1.8 fallback code for transaction.on_commit

pull/3934/head^2
Matt Westcott 2017-10-12 16:00:38 +01:00 zatwierdzone przez Karl Hobley
rodzic 60c26e5565
commit 98f600c514
4 zmienionych plików z 2 dodań i 75 usunięć

Wyświetl plik

@ -1,24 +1,14 @@
from __future__ import absolute_import, unicode_literals
from django import VERSION as DJANGO_VERSION
from django.db import transaction
from django.db.models.signals import post_delete
from wagtail.wagtaildocs.models import get_document_model
TRANSACTION_ON_COMMIT_AVAILABLE = (1, 8) < DJANGO_VERSION[:2]
if TRANSACTION_ON_COMMIT_AVAILABLE:
def on_commit_handler(f):
return transaction.on_commit(f)
else:
def on_commit_handler(f):
return f()
def post_delete_file_cleanup(instance, **kwargs):
# Pass false so FileField doesn't save the model.
on_commit_handler(lambda: instance.file.delete(False))
transaction.on_commit(lambda: instance.file.delete(False))
def register_signal_handlers():

Wyświetl plik

@ -1,7 +1,5 @@
from __future__ import absolute_import, unicode_literals
import unittest
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group, Permission
from django.core.files.base import ContentFile
@ -131,10 +129,6 @@ class TestFilesDeletedForDefaultModels(TransactionTestCase):
numchild=0,
)
def test_oncommit_available(self):
self.assertEqual(hasattr(transaction, 'on_commit'), signal_handlers.TRANSACTION_ON_COMMIT_AVAILABLE)
@unittest.skipUnless(signal_handlers.TRANSACTION_ON_COMMIT_AVAILABLE, 'is required for this test')
def test_document_file_deleted_oncommit(self):
with transaction.atomic():
document = get_document_model().objects.create(title="Test Image", file=get_test_image_file())
@ -143,19 +137,6 @@ class TestFilesDeletedForDefaultModels(TransactionTestCase):
self.assertTrue(document.file.storage.exists(document.file.name))
self.assertFalse(document.file.storage.exists(document.file.name))
@unittest.skipIf(signal_handlers.TRANSACTION_ON_COMMIT_AVAILABLE, 'duplicate')
def test_document_file_deleted(self):
'''
this test duplicates `test_image_file_deleted_oncommit` for
django 1.8 support and can be removed once django 1.8 is no longer
supported
'''
with transaction.atomic():
document = get_document_model().objects.create(title="Test Image", file=get_test_image_file())
self.assertTrue(document.file.storage.exists(document.file.name))
document.delete()
self.assertFalse(document.file.storage.exists(document.file.name))
@override_settings(WAGTAILDOCS_DOCUMENT_MODEL='tests.CustomDocument')
class TestFilesDeletedForCustomModels(TestFilesDeletedForDefaultModels):

Wyświetl plik

@ -1,6 +1,5 @@
from __future__ import absolute_import, unicode_literals
from django import VERSION as DJANGO_VERSION
from django.conf import settings
from django.db import transaction
from django.db.models.signals import post_delete, pre_save
@ -8,18 +7,9 @@ from django.db.models.signals import post_delete, pre_save
from wagtail.wagtailimages import get_image_model
TRANSACTION_ON_COMMIT_AVAILABLE = (1, 8) < DJANGO_VERSION[:2]
if TRANSACTION_ON_COMMIT_AVAILABLE:
def on_commit_handler(f):
return transaction.on_commit(f)
else:
def on_commit_handler(f):
return f()
def post_delete_file_cleanup(instance, **kwargs):
# Pass false so FileField doesn't save the model.
on_commit_handler(lambda: instance.file.delete(False))
transaction.on_commit(lambda: instance.file.delete(False))
def pre_save_image_feature_detection(instance, **kwargs):

Wyświetl plik

@ -1,7 +1,5 @@
from __future__ import absolute_import, unicode_literals
import unittest
from django.db import transaction
from django.test import TransactionTestCase, override_settings
@ -36,10 +34,6 @@ class TestFilesDeletedForDefaultModels(TransactionTestCase):
numchild=0,
)
def test_oncommit_available(self):
self.assertEqual(hasattr(transaction, 'on_commit'), signal_handlers.TRANSACTION_ON_COMMIT_AVAILABLE)
@unittest.skipUnless(signal_handlers.TRANSACTION_ON_COMMIT_AVAILABLE, 'is required for this test')
def test_image_file_deleted_oncommit(self):
with transaction.atomic():
image = get_image_model().objects.create(title="Test Image", file=get_test_image_file())
@ -48,20 +42,6 @@ class TestFilesDeletedForDefaultModels(TransactionTestCase):
self.assertTrue(image.file.storage.exists(image.file.name))
self.assertFalse(image.file.storage.exists(image.file.name))
@unittest.skipIf(signal_handlers.TRANSACTION_ON_COMMIT_AVAILABLE, 'duplicate')
def test_image_file_deleted(self):
'''
this test duplicates `test_image_file_deleted_oncommit` for
django 1.8 support and can be removed once django 1.8 is no longer
supported
'''
with transaction.atomic():
image = get_image_model().objects.create(title="Test Image", file=get_test_image_file())
self.assertTrue(image.file.storage.exists(image.file.name))
image.delete()
self.assertFalse(image.file.storage.exists(image.file.name))
@unittest.skipUnless(signal_handlers.TRANSACTION_ON_COMMIT_AVAILABLE, 'is required for this test')
def test_rendition_file_deleted_oncommit(self):
with transaction.atomic():
image = get_image_model().objects.create(title="Test Image", file=get_test_image_file())
@ -71,20 +51,6 @@ class TestFilesDeletedForDefaultModels(TransactionTestCase):
self.assertTrue(rendition.file.storage.exists(rendition.file.name))
self.assertFalse(rendition.file.storage.exists(rendition.file.name))
@unittest.skipIf(signal_handlers.TRANSACTION_ON_COMMIT_AVAILABLE, 'duplicate')
def test_rendition_file_deleted(self):
'''
this test duplicates `test_rendition_file_deleted_oncommit` for
django 1.8 support and can be removed once django 1.8 is no longer
supported
'''
with transaction.atomic():
image = get_image_model().objects.create(title="Test Image", file=get_test_image_file())
rendition = image.get_rendition('original')
self.assertTrue(rendition.file.storage.exists(rendition.file.name))
rendition.delete()
self.assertFalse(rendition.file.storage.exists(rendition.file.name))
@override_settings(WAGTAILIMAGES_IMAGE_MODEL='tests.CustomImage')
class TestFilesDeletedForCustomModels(TestFilesDeletedForDefaultModels):