Пример #1
0
 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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
 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)
Пример #6
0
 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)
Пример #7
0
    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)
Пример #8
0
 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)
Пример #9
0
    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)
Пример #10
0
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)
Пример #11
0
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)