def get_edit_handler(cls): edit_handler = super().get_edit_handler() tabs = edit_handler.clone_kwargs()['children'] tabs.insert(1, ObjectList(cls.content_panels_en, heading='En')) edit_handler = TabbedInterface(tabs, base_form_class=cls.base_form_class) return edit_handler.bind_to(model=cls)
def get_edit_handler(cls): if hasattr(cls, 'edit_handler'): return cls.edit_handler.bind_to(model=cls) editor_panels = [ ObjectList(cls.content_panels + [ AdminOnlyFieldPanel('coa_global', classname="admin-only-field") ], heading='Content'), ObjectList(cls.notes_content_panel, heading='Notes') ] try: if flag_enabled('SHOW_EXTRA_PANELS'): editor_panels += (PermissionObjectList(cls.promote_panels, heading='SEO'), PermissionObjectList(cls.settings_panels, heading='Settings')) except ProgrammingError as e: print("some problem, maybe with flags") pass edit_handler = TabbedInterface(editor_panels) return edit_handler.bind_to(model=cls)
def get_edit_handler(cls): tabs = [] if cls.basic_content_panels and cls.superuser_content_panels: tabs.append( PerUserContentPanels(heading="Content", classname="content")) if cls.key_details_panels and cls.basic_key_details_panels: tabs.append( PerUserContentPanels(cls.settings_panels, heading="Key Details", classname="key_details")) if cls.promote_panels: tabs.append( PerUserContentPanels(cls.promote_panels, heading="Promote", classname="promote")) if cls.settings_panels: tabs.append( PerUserContentPanels(cls.settings_panels, heading="Settings", classname="settings")) edit_handler = TabbedInterface(tabs, base_form_class=cls.base_form_class) return edit_handler.bind_to(model=cls)
def get_edit_handler(cls): """ Get the EditHandler to use in the Wagtail admin when editing this page type. """ if hasattr(cls, "edit_handler"): return cls.edit_handler.bind_to(model=cls) # construct a TabbedInterface made up of content_panels, promote_panels # and settings_panels, skipping any which are empty tabs = [] if cls.content_panels: tabs.append(ObjectList(cls.content_panels, heading=_("Content"))) if hasattr(cls, "extra_panels"): for panel_id, heading in cls.extra_panels: tabs.append(ObjectList(getattr(cls, panel_id), heading=heading)) if cls.promote_panels: tabs.append( ObjectList(cls.promote_panels, heading=_("SEO"), classname="seo") ) if cls.settings_panels: tabs.append( ObjectList( cls.settings_panels, heading=_("Settings"), classname="settings" ) ) EditHandler = TabbedInterface(tabs, base_form_class=cls.base_form_class) return EditHandler.bind_to(model=cls)
def get_edit_handler(cls) -> TabbedInterface: # NOQA """""" tabs = cls.get_admin_tabs() edit_handler = TabbedInterface([ ObjectList(tab[0], heading=tab[1], classname=slugify(tab[1])) for tab in tabs ]) return edit_handler.bind_to(model=cls)
def get_edit_handler(cls): edit_handler = TabbedInterface([ ObjectList(cls.content_panels, heading=_("Content")), ObjectList(Page.promote_panels, heading=_("Promote")), ObjectList(Page.settings_panels, heading=_("Settings")), ObjectList(cls.theme_panels, heading=_("Theme")), ObjectList(cls.script_panels, heading=_("Script")), ]) return edit_handler.bind_to(cls)
def get_edit_handler(cls): edit_handler = TabbedInterface([ ObjectList(cls.content_panels, heading='Hovedinnhold'), ObjectList(cls.pagesection_panels, heading='Seksjoner'), ObjectList(cls.promote_panels, heading='Fremming'), ObjectList(cls.settings_panels, heading='Instillinger', classname='settings'), ]) return edit_handler.bind_to(model=cls)
def get_edit_handler(cls): edit_handler = TabbedInterface([ ObjectList(cls.content_panels, heading='Snippet Content'), ObjectList(cls.main_content_panels, heading='Main Content'), ObjectList(cls.page_panel_options, heading='Page Options'), ObjectList(cls.promote_panels, heading='Promote'), ObjectList(cls.settings_panels, heading='Settings', classname="settings"), ]) return edit_handler.bind_to(cls)
def get_edit_handler(cls): tabs = [] if cls.basic_content_panels and cls.superuser_content_panels: tabs.append(PerUserContentPanels(heading='Content')) if cls.promote_panels: tabs.append(ObjectList(cls.promote_panels, heading='Promote')) if cls.settings_panels: tabs.append(ObjectList(cls.settings_panels, heading='Settings', classname='settings')) edit_handler = TabbedInterface(tabs, base_form_class=cls.base_form_class) return edit_handler.bind_to(model=cls)
class TestTabbedInterface(TestCase): def setUp(self): self.request = RequestFactory().get('/') user = AnonymousUser() # technically, Anonymous users cannot access the admin self.request.user = user # a custom tabbed interface for EventPage self.event_page_tabbed_interface = TabbedInterface([ ObjectList([ FieldPanel('title', widget=forms.Textarea), FieldPanel('date_from'), FieldPanel('date_to'), ], heading='Event details', classname="shiny"), ObjectList([ InlinePanel('speakers', label="Speakers"), ], heading='Speakers'), ]).bind_to(model=EventPage, request=self.request) def test_get_form_class(self): EventPageForm = self.event_page_tabbed_interface.get_form_class() form = EventPageForm() # form must include the 'speakers' formset required by the speakers InlinePanel self.assertIn('speakers', form.formsets) # form must respect any overridden widgets self.assertEqual(type(form.fields['title'].widget), forms.Textarea) def test_render(self): EventPageForm = self.event_page_tabbed_interface.get_form_class() event = EventPage(title='Abergavenny sheepdog trials') form = EventPageForm(instance=event) tabbed_interface = self.event_page_tabbed_interface.bind_to( instance=event, form=form, ) result = tabbed_interface.render() # result should contain tab buttons self.assertIn('<a href="#tab-event-details" class="active">Event details</a>', result) self.assertIn('<a href="#tab-speakers" class="">Speakers</a>', result) # result should contain tab panels self.assertIn('<div class="tab-content">', result) self.assertIn('<section id="tab-event-details" class="shiny active" role="tabpanel" aria-labelledby="tab-label-event-details">', result) self.assertIn('<section id="tab-speakers" class=" " role="tabpanel" aria-labelledby="tab-label-speakers">', result) # result should contain rendered content from descendants self.assertIn('Abergavenny sheepdog trials</textarea>', result) # this result should not include fields that are not covered by the panel definition self.assertNotIn('signup_link', result) def test_required_fields(self): # required_fields should report the set of form fields to be rendered recursively by children of TabbedInterface result = set(self.event_page_tabbed_interface.required_fields()) self.assertEqual(result, set(['title', 'date_from', 'date_to'])) def test_render_form_content(self): EventPageForm = self.event_page_tabbed_interface.get_form_class() event = EventPage(title='Abergavenny sheepdog trials') form = EventPageForm(instance=event) tabbed_interface = self.event_page_tabbed_interface.bind_to( instance=event, form=form, ) result = tabbed_interface.render_form_content() # rendered output should contain field content as above self.assertIn('Abergavenny sheepdog trials</textarea>', result) # rendered output should NOT include fields that are in the model but not represented # in the panel definition self.assertNotIn('signup_link', result)
class TestTabbedInterface(TestCase): def setUp(self): self.request = RequestFactory().get('/') user = AnonymousUser() # technically, Anonymous users cannot access the admin self.request.user = user # a custom tabbed interface for EventPage self.event_page_tabbed_interface = TabbedInterface([ ObjectList([ FieldPanel('title', widget=forms.Textarea), FieldPanel('date_from'), FieldPanel('date_to'), ], heading='Event details', classname="shiny"), ObjectList([ InlinePanel('speakers', label="Speakers"), ], heading='Speakers'), ]).bind_to(model=EventPage, request=self.request) def test_get_form_class(self): EventPageForm = self.event_page_tabbed_interface.get_form_class() form = EventPageForm() # form must include the 'speakers' formset required by the speakers InlinePanel self.assertIn('speakers', form.formsets) # form must respect any overridden widgets self.assertEqual(type(form.fields['title'].widget), forms.Textarea) def test_render(self): EventPageForm = self.event_page_tabbed_interface.get_form_class() event = EventPage(title='Abergavenny sheepdog trials') form = EventPageForm(instance=event) tabbed_interface = self.event_page_tabbed_interface.bind_to( instance=event, form=form, ) result = tabbed_interface.render() # result should contain tab buttons self.assertIn('<a href="#tab-event-details" class="active">Event details</a>', result) self.assertIn('<a href="#tab-speakers" class="">Speakers</a>', result) # result should contain tab panels self.assertIn('<div class="tab-content">', result) self.assertIn('<section id="tab-event-details" class="shiny active">', result) self.assertIn('<section id="tab-speakers" class=" ">', result) # result should contain rendered content from descendants self.assertIn('Abergavenny sheepdog trials</textarea>', result) # this result should not include fields that are not covered by the panel definition self.assertNotIn('signup_link', result) def test_required_fields(self): # required_fields should report the set of form fields to be rendered recursively by children of TabbedInterface result = set(self.event_page_tabbed_interface.required_fields()) self.assertEqual(result, set(['title', 'date_from', 'date_to'])) def test_render_form_content(self): EventPageForm = self.event_page_tabbed_interface.get_form_class() event = EventPage(title='Abergavenny sheepdog trials') form = EventPageForm(instance=event) tabbed_interface = self.event_page_tabbed_interface.bind_to( instance=event, form=form, ) result = tabbed_interface.render_form_content() # rendered output should contain field content as above self.assertIn('Abergavenny sheepdog trials</textarea>', result) # rendered output should NOT include fields that are in the model but not represented # in the panel definition self.assertNotIn('signup_link', result)