Explorar o código

Remove override_settings shim for overriding storage settings

Sage Abdullah hai 1 ano
pai
achega
6604051b6c

+ 14 - 4
wagtail/documents/tests/test_serializers.py

@@ -1,9 +1,9 @@
+from django.conf import settings
 from django.core.files.base import ContentFile
-from django.test import TestCase
+from django.test import TestCase, override_settings
 from django.urls import reverse
 
 from wagtail.documents import models
-from wagtail.test.utils import override_settings
 
 
 class TestCorrectDownloadUrlSerialization(TestCase):
@@ -31,7 +31,12 @@ class TestCorrectDownloadUrlSerialization(TestCase):
 
     @override_settings(
         WAGTAILDOCS_SERVE_METHOD="redirect",
-        DEFAULT_FILE_STORAGE="wagtail.test.dummy_external_storage.DummyExternalStorage",
+        STORAGES={
+            **settings.STORAGES,
+            "default": {
+                "BACKEND": "wagtail.test.dummy_external_storage.DummyExternalStorage"
+            },
+        },
         WAGTAILAPI_BASE_URL="http://example.com/",
     )
     def test_serializer_wagtaildocs_serve_redirect(self):
@@ -48,7 +53,12 @@ class TestCorrectDownloadUrlSerialization(TestCase):
 
     @override_settings(
         WAGTAILDOCS_SERVE_METHOD="direct",
-        DEFAULT_FILE_STORAGE="wagtail.test.dummy_external_storage.DummyExternalStorage",
+        STORAGES={
+            **settings.STORAGES,
+            "default": {
+                "BACKEND": "wagtail.test.dummy_external_storage.DummyExternalStorage"
+            },
+        },
         MEDIA_URL="http://remotestorage.com/media/",
         WAGTAILAPI_BASE_URL="http://example.com/",
     )

+ 7 - 3
wagtail/documents/tests/test_views.py

@@ -5,11 +5,10 @@ from unittest import mock
 
 from django.conf import settings
 from django.core.files.base import ContentFile
-from django.test import TestCase
+from django.test import TestCase, override_settings
 from django.urls import reverse
 
 from wagtail.documents import models
-from wagtail.test.utils import override_settings
 
 
 @override_settings(WAGTAILDOCS_SERVE_METHOD=None)
@@ -239,7 +238,12 @@ class TestDirectDocumentUrls(TestCase):
 
 @override_settings(
     WAGTAILDOCS_SERVE_METHOD=None,
-    DEFAULT_FILE_STORAGE="wagtail.test.dummy_external_storage.DummyExternalStorage",
+    STORAGES={
+        **settings.STORAGES,
+        "default": {
+            "BACKEND": "wagtail.test.dummy_external_storage.DummyExternalStorage"
+        },
+    },
 )
 class TestServeWithExternalStorage(TestCase):
     """

+ 33 - 7
wagtail/images/tests/test_admin_views.py

@@ -2,11 +2,12 @@ import datetime
 import json
 import urllib
 
+from django.conf import settings
 from django.contrib.auth.models import Group, Permission
 from django.core.files.uploadedfile import SimpleUploadedFile, TemporaryUploadedFile
 from django.template.defaultfilters import filesizeformat
 from django.template.loader import render_to_string
-from django.test import RequestFactory, TestCase, TransactionTestCase
+from django.test import RequestFactory, TestCase, TransactionTestCase, override_settings
 from django.urls import reverse
 from django.utils.encoding import force_str
 from django.utils.html import escape, escapejs
@@ -29,7 +30,7 @@ from wagtail.test.testapp.models import (
     EventPage,
     VariousOnDeleteModel,
 )
-from wagtail.test.utils import WagtailTestUtils, override_settings
+from wagtail.test.utils import WagtailTestUtils
 
 from .utils import Image, get_test_image_file, get_test_image_file_svg
 
@@ -632,7 +633,12 @@ class TestImageAddView(WagtailTestUtils, TestCase):
         self.assertEqual(image.collection, root_collection)
 
     @override_settings(
-        DEFAULT_FILE_STORAGE="wagtail.test.dummy_external_storage.DummyExternalStorage"
+        STORAGES={
+            **settings.STORAGES,
+            "default": {
+                "BACKEND": "wagtail.test.dummy_external_storage.DummyExternalStorage"
+            },
+        },
     )
     def test_add_with_external_file_storage(self):
         response = self.post(
@@ -940,7 +946,12 @@ class TestImageEditView(WagtailTestUtils, TestCase):
         self.assertContains(response, expected_url)
 
     @override_settings(
-        DEFAULT_FILE_STORAGE="wagtail.test.dummy_external_storage.DummyExternalStorage"
+        STORAGES={
+            **settings.STORAGES,
+            "default": {
+                "BACKEND": "wagtail.test.dummy_external_storage.DummyExternalStorage"
+            },
+        },
     )
     def test_simple_with_external_storage(self):
         # The view calls get_file_size on the image that closes the file if
@@ -1040,7 +1051,12 @@ class TestImageEditView(WagtailTestUtils, TestCase):
         self.assertNotEqual(self.image.file_hash, "abcedf")
 
     @override_settings(
-        DEFAULT_FILE_STORAGE="wagtail.test.dummy_external_storage.DummyExternalStorage"
+        STORAGES={
+            **settings.STORAGES,
+            "default": {
+                "BACKEND": "wagtail.test.dummy_external_storage.DummyExternalStorage"
+            },
+        },
     )
     def test_edit_with_new_image_file_and_external_storage(self):
         file_content = get_test_image_file().file.getvalue()
@@ -1085,7 +1101,12 @@ class TestImageEditView(WagtailTestUtils, TestCase):
         self.check_get_missing_file_displays_warning()
 
     @override_settings(
-        DEFAULT_FILE_STORAGE="wagtail.test.dummy_external_storage.DummyExternalStorage"
+        STORAGES={
+            **settings.STORAGES,
+            "default": {
+                "BACKEND": "wagtail.test.dummy_external_storage.DummyExternalStorage"
+            },
+        },
     )
     def test_get_missing_file_displays_warning_with_custom_storage(self):
         self.check_get_missing_file_displays_warning()
@@ -2097,7 +2118,12 @@ class TestImageChooserUploadView(WagtailTestUtils, TestCase):
         self.assertContains(response, expected_action_attr)
 
     @override_settings(
-        DEFAULT_FILE_STORAGE="wagtail.test.dummy_external_storage.DummyExternalStorage"
+        STORAGES={
+            **settings.STORAGES,
+            "default": {
+                "BACKEND": "wagtail.test.dummy_external_storage.DummyExternalStorage"
+            },
+        },
     )
     def test_upload_with_external_storage(self):
         response = self.client.post(

+ 9 - 3
wagtail/images/tests/test_models.py

@@ -1,5 +1,6 @@
 import unittest
 
+from django.conf import settings
 from django.contrib.auth.models import Group, Permission
 from django.core.cache import caches
 from django.core.files import File
@@ -7,7 +8,7 @@ from django.core.files.storage import DefaultStorage, Storage
 from django.core.files.uploadedfile import SimpleUploadedFile
 from django.db.models import Prefetch
 from django.db.utils import IntegrityError
-from django.test import SimpleTestCase, TestCase, TransactionTestCase
+from django.test import SimpleTestCase, TestCase, TransactionTestCase, override_settings
 from django.urls import reverse
 from willow.image import Image as WillowImage
 
@@ -26,7 +27,7 @@ from wagtail.test.testapp.models import (
     EventPageCarouselItem,
     ReimportedImageModel,
 )
-from wagtail.test.utils import WagtailTestUtils, override_settings
+from wagtail.test.utils import WagtailTestUtils
 
 from .utils import (
     Image,
@@ -108,7 +109,12 @@ class TestImage(TestCase):
         self.assertTrue(self.image.is_stored_locally())
 
     @override_settings(
-        DEFAULT_FILE_STORAGE="wagtail.test.dummy_external_storage.DummyExternalStorage"
+        STORAGES={
+            **settings.STORAGES,
+            "default": {
+                "BACKEND": "wagtail.test.dummy_external_storage.DummyExternalStorage"
+            },
+        },
     )
     def test_is_stored_locally_with_external_storage(self):
         self.assertFalse(self.image.is_stored_locally())

+ 0 - 27
wagtail/test/utils/wagtail_tests.py

@@ -3,37 +3,10 @@ from contextlib import contextmanager
 from typing import Union
 
 from bs4 import BeautifulSoup
-from django.conf import settings
 from django.contrib.auth import get_user_model
-from django.test import override_settings as django_override_settings
 from django.test.testcases import assert_and_parse_html
 
 
-def override_settings(**kwargs):
-    """
-    Decorator that temporarily overrides Django settings,
-    with compatibility shims for old and newer Django versions.
-    """
-    DEFAULT_FILE_STORAGE = kwargs.get("DEFAULT_FILE_STORAGE")
-    storages = settings.STORAGES
-    if DEFAULT_FILE_STORAGE is not None:
-        kwargs.pop("DEFAULT_FILE_STORAGE")
-        kwargs["STORAGES"] = {
-            **storages,
-            "default": {"BACKEND": DEFAULT_FILE_STORAGE},
-        }
-
-    STATICFILES_STORAGE = kwargs.get("STATICFILES_STORAGE")
-    if STATICFILES_STORAGE is not None:
-        kwargs.pop("STATICFILES_STORAGE")
-        kwargs["STORAGES"] = {
-            **storages,
-            "staticfiles": {"BACKEND": STATICFILES_STORAGE},
-        }
-
-    return django_override_settings(**kwargs)
-
-
 class WagtailTestUtils:
     @staticmethod
     def get_soup(markup: Union[str, bytes]) -> BeautifulSoup: