Skip to content

Commit 42832b5

Browse files
authored
fix: Defining TEXT_EDITOR_SETTINGS in settings.py removed all default settings (#152)
1 parent ffa7e99 commit 42832b5

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

djangocms_text/widgets.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def __init__(
143143
self.plugin_position = plugin_position # specific
144144
if configuration and getattr(settings, configuration, False):
145145
self.configuration = deepcopy(self.rte_config.configuration)
146-
self.configuration.update(settings.TEXT_EDITOR_SETTINGS)
146+
self.configuration.update(text_settings.TEXT_EDITOR_SETTINGS)
147147
self.configuration.update(getattr(settings, configuration))
148148
else:
149149
self.configuration = deepcopy(self.rte_config.configuration)

tests/test_widget.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,31 @@ def test_text_sanitizer_no_settings(self):
110110
self.assertContains(response, "<span>some text</span>")
111111

112112

113+
@skipIf(SKIP_CMS_TEST, "Skipping tests because djangocms is not installed")
114+
class WidgetConfigurationTestCase(BaseTestCase):
115+
def test_htmlfield_configuration_without_text_editor_settings(self):
116+
"""Regression test for #136: HTMLField(configuration=...) should not
117+
raise AttributeError when TEXT_EDITOR_SETTINGS is not in Django settings."""
118+
from django.conf import settings
119+
from djangocms_text.widgets import TextEditorWidget
120+
121+
# Ensure TEXT_EDITOR_SETTINGS is not set in Django settings
122+
has_setting = hasattr(settings, "TEXT_EDITOR_SETTINGS")
123+
if has_setting:
124+
original = settings.TEXT_EDITOR_SETTINGS
125+
delattr(settings, "TEXT_EDITOR_SETTINGS")
126+
127+
# Define a custom configuration in Django settings
128+
settings.MY_CUSTOM_CONFIG = {"toolbar": "HTMLField"}
129+
try:
130+
widget = TextEditorWidget(configuration="MY_CUSTOM_CONFIG")
131+
self.assertEqual(widget.configuration["toolbar"], "HTMLField")
132+
finally:
133+
del settings.MY_CUSTOM_CONFIG
134+
if has_setting:
135+
settings.TEXT_EDITOR_SETTINGS = original
136+
137+
113138
@skipIf(not SKIP_CMS_TEST, "Skipping tests because djangocms is installed")
114139
class NonCMSWidgetTestCase(BaseTestCase):
115140
def test_django_form_renders_widget(self):

0 commit comments

Comments
 (0)