diff --git a/djangocms_snippet/forms.py b/djangocms_snippet/forms.py index 64337d95..e503b9d5 100644 --- a/djangocms_snippet/forms.py +++ b/djangocms_snippet/forms.py @@ -28,8 +28,9 @@ class Meta: def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.fields["snippet_grouper"].required = False - self.fields["snippet_grouper"].widget = forms.HiddenInput() + if self.fields.get("snippet_grouper"): + self.fields["snippet_grouper"].required = False + self.fields["snippet_grouper"].widget = forms.HiddenInput() def clean(self): data = super().clean() diff --git a/tests/test_admin.py b/tests/test_admin.py index 69fe4d50..54d37120 100644 --- a/tests/test_admin.py +++ b/tests/test_admin.py @@ -97,3 +97,19 @@ def test_admin_form_save_method(self): # We should have 2 groupers and snippets, due to the creation of the others in setUp self.assertEqual(Snippet._base_manager.count(), 2) self.assertEqual(SnippetGrouper._base_manager.count(), 2) + + @override_settings(DJANGOCMS_SNIPPET_VERSIONING_ENABLED=True) + def test_admin_form_edit_when_locked(self): + """ + When a form is initialised in read-only mode, it should not require self.fields to be populated, and + should return a read-only form. + """ + self.snippet_version.publish(user=self.superuser) + with self.login_user_context(self.superuser): + edit_url = reverse("admin:djangocms_snippet_snippet_change", args=(self.snippet.id,),) + response = self.client.get(edit_url) + + # Check that we are loading in readonly mode + self.assertContains(response, '