Example #1
0
def get_newsitem_edit_handler(NewsItem):
    if hasattr(NewsItem, 'edit_handler'):
        return NewsItem.edit_handler.bind_to_model(NewsItem)

    panels = extract_panel_definitions_from_model_class(NewsItem,
                                                        exclude=['newsindex'])
    return ObjectList(panels).bind_to_model(NewsItem)
Example #2
0
def get_snippet_edit_handler(model):
    if model not in SNIPPET_EDIT_HANDLERS:
        if hasattr(model, 'tabs'):
            tabs = []
            for tabdef in model.tabs:
                panels = None
                name = None
                classes = ''
                if len(tabdef) == 2:
                    name, panels = tabdef
                elif len(tabdef) == 3:
                    name, panels, classes = tabdef
                else:
                    continue
                tabs.append(ObjectList(panels, heading=name,
                                       classname=classes))

            SNIPPET_EDIT_HANDLERS[model] = TabbedInterface(tabs)
        else:
            panels = extract_panel_definitions_from_model_class(model)
            edit_handler = ObjectList(panels)

            SNIPPET_EDIT_HANDLERS[model] = edit_handler

    return SNIPPET_EDIT_HANDLERS[model]
Example #3
0
    def get_edit_handler_class(self):
        """
        Returns edit handler class for view model.

        :rtype: class.
        """
        # Custom class that skips adding missing fields, as we may want to
        # limit the number of fields presented to the user.
        class BaseChooserObjectList(BaseObjectList):
            def render_missing_fields(self):
                return ''
    
        def ChooserObjectList(children):
            return type('_ChooserObjectList', (BaseChooserObjectList,), {
                'children': children,
            })
    
        if hasattr(self.model, 'get_edit_handler'):
            handler_class = self.model.get_edit_handler()
        else:
            handler_class = ChooserObjectList(
                extract_panel_definitions_from_model_class(self.model)
            )

        # Return the edit handler class.
        return handler_class
Example #4
0
 def test_can_extract_panel_property(self):
     # A class with a 'panels' property defined should return that list
     result = extract_panel_definitions_from_model_class(EventPageSpeaker)
     self.assertEqual(len(result), 4)
     #print repr(result)
     self.assertTrue(
         any([isinstance(panel, ImageChooserPanel) for panel in result]))
Example #5
0
    def get_edit_handler_class(self):
        """
        Returns edit handler class for view model.

        :rtype: class.
        """

        # Custom class that skips adding missing fields, as we may want to
        # limit the number of fields presented to the user.
        class BaseChooserObjectList(BaseObjectList):
            def render_missing_fields(self):
                return ''

        def ChooserObjectList(children):
            return type('_ChooserObjectList', (BaseChooserObjectList, ), {
                'children': children,
            })

        if hasattr(self.model, 'get_edit_handler'):
            handler_class = self.model.get_edit_handler()
        else:
            handler_class = ChooserObjectList(
                extract_panel_definitions_from_model_class(self.model))

        # Return the edit handler class.
        return handler_class
Example #6
0
 def get_panel_definitions(cls):
     # Look for a panels definition in the InlinePanel declaration
     if cls.panels is not None:
         return cls.panels
     # Failing that, get it from the model
     else:
         return extract_panel_definitions_from_model_class(cls.related.model, exclude=[cls.related.field.name])
Example #7
0
 def get_edit_handler_class(self):
     if hasattr(self.model, 'edit_handler'):
         edit_handler = self.model.edit_handler
     else:
         panels = extract_panel_definitions_from_model_class(self.model)
         edit_handler = ObjectList(panels)
     return edit_handler.bind_to_model(self.model)
Example #8
0
 def get_edit_handler_class(self):
     if hasattr(self.model, 'edit_handler'):
         edit_handler = self.model.edit_handler
     else:
         panels = extract_panel_definitions_from_model_class(self.model)
         edit_handler = ObjectList(panels)
     return edit_handler.bind_to_model(self.model)
Example #9
0
def get_category_edit_handler(model):
    if model not in CATEGORY_EDIT_HANDLERS:
        panels = extract_panel_definitions_from_model_class(model, ['site'])
        edit_handler = ObjectList(panels)

        CATEGORY_EDIT_HANDLERS[model] = edit_handler

    return CATEGORY_EDIT_HANDLERS[model]
Example #10
0
def get_setting_edit_handler(model):
    if model not in SETTING_EDIT_HANDLERS:
        panels = extract_panel_definitions_from_model_class(model, ['site'])
        edit_handler = ObjectList(panels).bind_to_model(model)

        SETTING_EDIT_HANDLERS[model] = edit_handler

    return SETTING_EDIT_HANDLERS[model]
Example #11
0
def get_category_edit_handler(model):
    if model not in CATEGORY_EDIT_HANDLERS:
        panels = extract_panel_definitions_from_model_class(model, ['site'])
        edit_handler = ObjectList(panels)

        CATEGORY_EDIT_HANDLERS[model] = edit_handler

    return CATEGORY_EDIT_HANDLERS[model]
Example #12
0
def get_snippet_edit_handler(model):
    if model not in SNIPPET_EDIT_HANDLERS:
        panels = extract_panel_definitions_from_model_class(model)
        edit_handler = ObjectList(panels).bind_to_model(model)

        SNIPPET_EDIT_HANDLERS[model] = edit_handler

    return SNIPPET_EDIT_HANDLERS[model]
Example #13
0
def get_setting_edit_handler(model):
    if model not in SETTING_EDIT_HANDLERS:
        panels = extract_panel_definitions_from_model_class(model, ['site'])
        edit_handler = ObjectList(panels)

        SETTING_EDIT_HANDLERS[model] = edit_handler

    return SETTING_EDIT_HANDLERS[model]
Example #14
0
 def get_panel_definitions(cls, lang=None):
     # Look for a panels definition in the InlinePanel declaration
     panels = getattr(cls, 'panels' if not lang else 'panels_' + lang)
     if panels is not None:
         return panels
     # Failing that, get it from the model
     else:
         return extract_panel_definitions_from_model_class(cls.related.model, exclude=[cls.related.field.name])
Example #15
0
def get_snippet_edit_handler(model):
    if model not in SNIPPET_EDIT_HANDLERS:
        panels = extract_panel_definitions_from_model_class(model)
        edit_handler = ObjectList(panels).bind_to_model(model)

        SNIPPET_EDIT_HANDLERS[model] = edit_handler

    return SNIPPET_EDIT_HANDLERS[model]
Example #16
0
 def get_edit_handler_class(self):
     if hasattr(self.model, 'edit_handler'):
         edit_handler = self.model.edit_handler
     else:
         fields_to_exclude = self.model_admin.get_form_fields_exclude(request=self.request)
         panels = extract_panel_definitions_from_model_class(self.model, exclude=fields_to_exclude)
         edit_handler = ObjectList(panels)
     return edit_handler.bind_to_model(self.model)
Example #17
0
 def get_edit_handler_class(self):
     if hasattr(self.model, 'edit_handler'):
         edit_handler = self.model.edit_handler
     else:
         fields_to_exclude = self.model_admin.get_form_fields_exclude(
             request=self.request)
         panels = extract_panel_definitions_from_model_class(
             self.model, exclude=fields_to_exclude)
         edit_handler = ObjectList(panels)
     return edit_handler.bind_to_model(self.model)
Example #18
0
def get_snippet_edit_handler(model):
    if model not in SNIPPET_EDIT_HANDLERS:
        edit_handler = None
        try:
            edit_handler = model.get_edit_handler()
        except AttributeError:
            panels = extract_panel_definitions_from_model_class(model)
            edit_handler = ObjectList(panels)

        SNIPPET_EDIT_HANDLERS[model] = edit_handler

    return SNIPPET_EDIT_HANDLERS[model]
Example #19
0
def get_snippet_edit_handler(model):
    if model not in SNIPPET_EDIT_HANDLERS:
        if hasattr(model, 'edit_handler'):
            # use the edit handler specified on the page class
            edit_handler = model.edit_handler
        else:
            panels = extract_panel_definitions_from_model_class(model)
            edit_handler = ObjectList(panels)

        SNIPPET_EDIT_HANDLERS[model] = edit_handler.bind_to_model(model)

    return SNIPPET_EDIT_HANDLERS[model]
Example #20
0
    def test_can_build_panel_list(self):
        # EventPage has no 'panels' definition, so one should be derived from the field list
        panels = extract_panel_definitions_from_model_class(EventPage)

        self.assertTrue(any([
            isinstance(panel, FieldPanel) and panel.field_name == 'date_from'
            for panel in panels
        ]))

        # returned panel types should respect modelfield.get_panel() - used on RichTextField
        self.assertTrue(any([
            isinstance(panel, RichTextFieldPanel) and panel.field_name == 'body'
            for panel in panels
        ]))
Example #21
0
    def test_can_build_panel_list(self):
        # EventPage has no 'panels' definition, so one should be derived from the field list
        panels = extract_panel_definitions_from_model_class(EventPage)

        self.assertTrue(any([
            isinstance(panel, FieldPanel) and panel.field_name == 'date_from'
            for panel in panels
        ]))

        # returned panel types should respect modelfield.get_panel() - used on RichTextField
        self.assertTrue(any([
            isinstance(panel, RichTextFieldPanel) and panel.field_name == 'body'
            for panel in panels
        ]))
Example #22
0
def get_edit_handler(model):
    panels = extract_panel_definitions_from_model_class(model, ['site'])
    return ObjectList(panels).bind_to_model(model)
Example #23
0
def get_poll_edit_handler(Poll):
    panels = extract_panel_definitions_from_model_class(Poll)
    EditHandler = ObjectList(panels).bind_to_model(Poll)
    return EditHandler
Example #24
0
def panel_perms(Job, request):
    panels = extract_panel_definitions_from_model_class(
        Job, exclude=['jobindex'])
    EditHandler = ObjectList(panels).bind_to_model(Job)
    return EditHandler
Example #25
0
def get_invoice_edit_handler(Invoice):
    panels = extract_panel_definitions_from_model_class(
        Invoice, exclude=['invoiceindex'])
    EditHandler = ObjectList(panels).bind_to_model(Invoice)
    return EditHandler
Example #26
0
 def get_edit_handler_class(self):
     panels = extract_panel_definitions_from_model_class(self.model)
     return ObjectList(panels).bind_to_model(self.model)
Example #27
0
 def test_can_extract_panel_property(self):
     # A class with a 'panels' property defined should return that list
     result = extract_panel_definitions_from_model_class(EventPageSpeaker)
     self.assertEqual(len(result), 4)
     self.assertTrue(any([isinstance(panel, ImageChooserPanel) for panel in result]))
Example #28
0
 def test_exclude(self):
     panels = extract_panel_definitions_from_model_class(
         Site, exclude=['hostname'])
     for panel in panels:
         self.assertNotEqual(panel.field_name, 'hostname')
Example #29
0
 def test_extracted_objects_are_panels(self):
     panels = extract_panel_definitions_from_model_class(self.FakePage)
     for panel in panels:
         self.assertTrue(issubclass(panel, BaseFieldPanel))
Example #30
0
 def test_can_extract_panels(self):
     mock = MagicMock()
     mock.panels = 'foo'
     result = extract_panel_definitions_from_model_class(mock)
     self.assertEqual(result, 'foo')
Example #31
0
 def test_extracted_objects_are_panels(self):
     panels = extract_panel_definitions_from_model_class(Page)
     for panel in panels:
         self.assertTrue(issubclass(panel, BaseFieldPanel))
Example #32
0
def get_invoice_edit_handler(Invoice):
    panels = extract_panel_definitions_from_model_class(
        Invoice, exclude=['invoiceindex'])
    EditHandler = ObjectList(panels).bind_to_model(Invoice)
    return EditHandler
Example #33
0
def get_poll_edit_handler(Poll):
    panels = extract_panel_definitions_from_model_class(Poll)
    EditHandler = ObjectList(panels).bind_to_model(Poll)
    return EditHandler
Example #34
0
 def get_edit_handler_class(self):
     panels = extract_panel_definitions_from_model_class(self.model)
     return ObjectList(panels).bind_to_model(self.model)
Example #35
0
 def test_exclude(self):
     panels = extract_panel_definitions_from_model_class(Site, exclude=['hostname'])
     for panel in panels:
         self.assertNotEqual(panel.field_name, 'hostname')
Example #36
0
 def test_can_extract_panels(self):
     mock = MagicMock()
     mock.panels = 'foo'
     result = extract_panel_definitions_from_model_class(mock)
     self.assertEqual(result, 'foo')
Example #37
0
def get_setting_edit_handler(model):
    panels = extract_panel_definitions_from_model_class(model, ['site'])
    return ObjectList(panels).bind_to_model(model)
Example #38
0
def get_setting_edit_handler(model):
    if hasattr(model, 'edit_handler'):
        return model.edit_handler.bind_to_model(model)
    panels = extract_panel_definitions_from_model_class(model, ['site'])
    return ObjectList(panels).bind_to_model(model)