From 82897ee5734274c5f923e943bb6d4317b3f760a1 Mon Sep 17 00:00:00 2001 From: Jacob Topp-Mugglestone <55137073+jacobtoppm@users.noreply.github.com> Date: Mon, 26 Apr 2021 08:56:00 +0100 Subject: [PATCH] Set show_comments_toggle based on required fields (#7092) * Set show_comments_toggle based on required fields * Update test to use correct TabbedInterface arguments --- wagtail/admin/edit_handlers.py | 9 ++++++--- wagtail/admin/tests/test_edit_handlers.py | 12 ++++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/wagtail/admin/edit_handlers.py b/wagtail/admin/edit_handlers.py index 6399c1487c..b703b0033d 100644 --- a/wagtail/admin/edit_handlers.py +++ b/wagtail/admin/edit_handlers.py @@ -363,10 +363,13 @@ class BaseFormEditHandler(BaseCompositeEditHandler): class TabbedInterface(BaseFormEditHandler): template = "wagtailadmin/edit_handlers/tabbed_interface.html" - def __init__(self, *args, **kwargs): + def __init__(self, *args, show_comments_toggle=None, **kwargs): self.base_form_class = kwargs.pop('base_form_class', None) - self.show_comments_toggle = kwargs.pop('show_comments_toggle', False) super().__init__(*args, **kwargs) + if show_comments_toggle is not None: + self.show_comments_toggle = show_comments_toggle + else: + self.show_comments_toggle = 'comment_notifications' in self.required_fields() def clone_kwargs(self): kwargs = super().clone_kwargs() @@ -936,7 +939,7 @@ def get_edit_handler(cls): heading=gettext_lazy('Settings'), classname='settings')) - edit_handler = TabbedInterface(tabs, base_form_class=cls.base_form_class, show_comments_toggle=True) + edit_handler = TabbedInterface(tabs, base_form_class=cls.base_form_class) return edit_handler.bind_to(model=cls) diff --git a/wagtail/admin/tests/test_edit_handlers.py b/wagtail/admin/tests/test_edit_handlers.py index 4d6dda2edd..cf11aacfdf 100644 --- a/wagtail/admin/tests/test_edit_handlers.py +++ b/wagtail/admin/tests/test_edit_handlers.py @@ -1031,9 +1031,9 @@ There are no tabs on non-Page model editing within InlinePanels.""", """Checks should NOT warn if InlinePanel models use tabbed panels AND edit_handler""" EventPageSpeaker.content_panels = [FieldPanel('first_name')] - EventPageSpeaker.edit_handler = TabbedInterface( + EventPageSpeaker.edit_handler = TabbedInterface([ ObjectList([FieldPanel('last_name')], heading='test') - ) + ]) # should not be any errors self.assertEqual(self.get_checks_result(), []) @@ -1054,12 +1054,20 @@ class TestCommentPanel(TestCase, WagtailTestUtils): self.object_list = ObjectList([ CommentPanel() ]).bind_to(model=EventPage, request=self.request) + self.tabbed_interface = TabbedInterface([self.object_list]) self.EventPageForm = self.object_list.get_form_class() self.event_page = EventPage.objects.get(slug='christmas') self.comment = Comment.objects.create(page=self.event_page, text='test', user=self.other_user, contentpath='test_contentpath') self.reply_1 = CommentReply.objects.create(comment=self.comment, text='reply_1', user=self.other_user) self.reply_2 = CommentReply.objects.create(comment=self.comment, text='reply_2', user=self.commenting_user) + def test_comments_toggle_enabled(self): + """ + Test that the comments toggle is enabled for a TabbedInterface containing CommentPanel, and disabled otherwise + """ + self.assertTrue(self.tabbed_interface.show_comments_toggle) + self.assertFalse(TabbedInterface([ObjectList(self.event_page.content_panels)]).show_comments_toggle) + def test_context(self): """ Test that the context contains the data about existing comments necessary to initialize the commenting app