Skip to content

Commit 98ddf0c

Browse files
authored
fix: form initialisation error in read-only mode (#83)
1 parent 5a3323c commit 98ddf0c

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

djangocms_snippet/forms.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ class Meta:
2828

2929
def __init__(self, *args, **kwargs):
3030
super().__init__(*args, **kwargs)
31-
self.fields["snippet_grouper"].required = False
32-
self.fields["snippet_grouper"].widget = forms.HiddenInput()
31+
if self.fields.get("snippet_grouper"):
32+
self.fields["snippet_grouper"].required = False
33+
self.fields["snippet_grouper"].widget = forms.HiddenInput()
3334

3435
def clean(self):
3536
data = super().clean()

tests/test_admin.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,19 @@ def test_admin_form_save_method(self):
9797
# We should have 2 groupers and snippets, due to the creation of the others in setUp
9898
self.assertEqual(Snippet._base_manager.count(), 2)
9999
self.assertEqual(SnippetGrouper._base_manager.count(), 2)
100+
101+
@override_settings(DJANGOCMS_SNIPPET_VERSIONING_ENABLED=True)
102+
def test_admin_form_edit_when_locked(self):
103+
"""
104+
When a form is initialised in read-only mode, it should not require self.fields to be populated, and
105+
should return a read-only form.
106+
"""
107+
self.snippet_version.publish(user=self.superuser)
108+
with self.login_user_context(self.superuser):
109+
edit_url = reverse("admin:djangocms_snippet_snippet_change", args=(self.snippet.id,),)
110+
response = self.client.get(edit_url)
111+
112+
# Check that we are loading in readonly mode
113+
self.assertContains(response, '<div class="readonly">Test Snippet</div>')
114+
# We should have the same number of snippets as before
115+
self.assertEqual(Snippet.objects.count(), 1)

0 commit comments

Comments
 (0)