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)
def get_setting_edit_handler(model): if hasattr(model, 'edit_handler'): edit_handler = model.edit_handler else: panels = extract_panel_definitions_from_model_class(model, ['site']) edit_handler = ObjectList(panels) return edit_handler.bind_to(model=model)
def get_edit_handler(model): panels = extract_panel_definitions_from_model_class(model, ['site']) if utils.is_wagtail_version_more_than_equal_to_2_5(): return ObjectList(panels).bind_to(model=model) else: return ObjectList(panels).bind_to_model(model)
def get_edit_handler(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)
def get_locale_component_edit_handler(model): if hasattr(model, "edit_handler"): # use the edit handler specified on the class return model.edit_handler else: panels = extract_panel_definitions_from_model_class(model, exclude=["locale"]) return ObjectList(panels)
def get_edit_handler(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)
def get_poll_edit_handler(model): if model not in SNIPPET_EDIT_HANDLERS: if hasattr(model, 'edit_handler'): 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]
def get_translation_component_edit_handler(model): if hasattr(model, "edit_handler"): # use the edit handler specified on the class return model.edit_handler else: panels = extract_panel_definitions_from_model_class(model) return ObjectList( panels, base_form_class=getattr(model, "base_form_class", WagtailAdminModelForm), )
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]
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]
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 ]))
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 ]))
def _patch_other_models(self, model): if hasattr(model, 'edit_handler'): edit_handler = model.edit_handler for tab in edit_handler: tab.children = self._patch_panels(tab.children) elif hasattr(model, 'panels'): model.panels = self._patch_panels(model.panels) else: panels = extract_panel_definitions_from_model_class(model) translation_registered_fields = translator.get_options_for_model(model).fields panels = filter(lambda field: field.field_name not in translation_registered_fields, panels) edit_handler = ObjectList(panels) SNIPPET_EDIT_HANDLERS[model] = edit_handler.bind_to_model(model)
def _patch_other_models(self, model): if hasattr(model, 'edit_handler'): edit_handler = model.edit_handler for tab in edit_handler.children: tab.children = self._patch_panels(tab.children) elif hasattr(model, 'panels'): model.panels = self._patch_panels(model.panels) else: panels = extract_panel_definitions_from_model_class(model) translation_registered_fields = translator.get_options_for_model( model).fields panels = filter( lambda field: field.field_name not in translation_registered_fields, panels) edit_handler = ObjectList(panels) SNIPPET_EDIT_HANDLERS[model] = edit_handler.bind_to(model=model)
def get_edit_handler(self, instance, request): """ Returns the appropriate edit_handler for this modeladmin class. edit_handlers can be defined either on the model itself or on the modeladmin (as property edit_handler or panels). Falls back to extracting panel / edit handler definitions from the model class. """ if hasattr(self, 'edit_handler'): edit_handler = self.edit_handler elif hasattr(self, 'panels'): panels = self.panels edit_handler = ObjectList(panels) elif hasattr(self.model, 'edit_handler'): edit_handler = self.model.edit_handler elif hasattr(self.model, 'panels'): panels = self.model.panels edit_handler = ObjectList(panels) else: fields_to_exclude = self.get_form_fields_exclude(request=request) panels = extract_panel_definitions_from_model_class(self.model, exclude=fields_to_exclude) edit_handler = ObjectList(panels) return edit_handler
def get_edit_handler(self, instance, request): """ Returns the appropriate edit_handler for this modeladmin class. edit_handlers can be defined either on the model itself or on the modeladmin (as property edit_handler or panels). Falls back to extracting panel / edit handler definitions from the model class. """ if hasattr(self, 'edit_handler'): edit_handler = self.edit_handler elif hasattr(self, 'panels'): panels = self.panels edit_handler = ObjectList(panels) elif hasattr(self.model, 'edit_handler'): edit_handler = self.model.edit_handler elif hasattr(self.model, 'panels'): panels = self.model.panels edit_handler = ObjectList(panels) else: fields_to_exclude = self.get_form_fields_exclude(request=request) panels = extract_panel_definitions_from_model_class(self.model, exclude=fields_to_exclude) edit_handler = ObjectList(panels) return edit_handler
def test_exclude(self): panels = extract_panel_definitions_from_model_class(Site, exclude=['hostname']) for panel in panels: self.assertNotEqual(panel.field_name, 'hostname')
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), 5) self.assertTrue(any([isinstance(panel, ImageChooserPanel) for panel in result]))
def get_edit_handler(model): panels = extract_panel_definitions_from_model_class(model, ['site']) return ObjectList(panels).bind_to_model(model)
def test_exclude_with_defined_panels(self): Site.panels = [FieldPanel('hostname')] panels = extract_panel_definitions_from_model_class(Site, exclude=['hostname']) self.assertEqual([], panels)
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)
def test_exclude_with_defined_panels(self): Site.panels = [FieldPanel('hostname')] panels = extract_panel_definitions_from_model_class(Site, exclude=['hostname']) self.assertEquals([], panels)
def test_exclude(self): panels = extract_panel_definitions_from_model_class(Site, exclude=['hostname']) for panel in panels: self.assertNotEqual(panel.field_name, 'hostname')
def get_poll_edit_handler(Poll): panels = extract_panel_definitions_from_model_class(Poll) EditHandler = ObjectList(panels).bind_to_model(Poll) return EditHandler
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]))
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)