diff --git a/debug_toolbar/settings.py b/debug_toolbar/settings.py index d512e11ae..aac87e6ba 100644 --- a/debug_toolbar/settings.py +++ b/debug_toolbar/settings.py @@ -1,6 +1,8 @@ from functools import lru_cache from django.conf import settings +from django.dispatch import receiver +from django.test.signals import setting_changed CONFIG_DEFAULTS = { # Toolbar options @@ -71,3 +73,18 @@ def get_panels(): except AttributeError: PANELS = PANELS_DEFAULTS return PANELS + + +@receiver(setting_changed) +def update_toolbar_config(*, setting, **kwargs): + """ + Refresh configuration when overriding settings. + """ + if setting == "DEBUG_TOOLBAR_CONFIG": + get_config.cache_clear() + elif setting == "DEBUG_TOOLBAR_PANELS": + from debug_toolbar.toolbar import DebugToolbar + + get_panels.cache_clear() + DebugToolbar._panel_classes = None + # Not implemented: invalidate debug_toolbar.urls. diff --git a/docs/changes.rst b/docs/changes.rst index 76c839252..9077d22c6 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -7,6 +7,9 @@ Next version * Removed support for Django < 3.2. * Updated check ``W006`` to look for ``django.template.loaders.app_directories.Loader``. +* Reset settings when overridden in tests. Packages or projects using + django-debug-toolbar can now use Django’s test settings tools, like + ``@override_settings``, to reconfigure the toolbar during tests. 3.2.4 (2021-12-15) ------------------ diff --git a/tests/__init__.py b/tests/__init__.py index c8813783f..e69de29bb 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,21 +0,0 @@ -# Refresh the debug toolbar's configuration when overriding settings. - -from django.dispatch import receiver -from django.test.signals import setting_changed - -from debug_toolbar import settings as dt_settings -from debug_toolbar.toolbar import DebugToolbar - - -@receiver(setting_changed) -def update_toolbar_config(**kwargs): - if kwargs["setting"] == "DEBUG_TOOLBAR_CONFIG": - dt_settings.get_config.cache_clear() - - -@receiver(setting_changed) -def update_toolbar_panels(**kwargs): - if kwargs["setting"] == "DEBUG_TOOLBAR_PANELS": - dt_settings.get_panels.cache_clear() - DebugToolbar._panel_classes = None - # Not implemented: invalidate debug_toolbar.urls.