mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-12 17:23:15 +00:00
FieldPanel to accept custom widgets
FieldPanel accepts a widget argument which will override the default widget for this field (torchbox/wagtail#848)
This commit is contained in:
parent
0ffaa5c271
commit
111caf86a5
1 changed files with 17 additions and 3 deletions
|
|
@ -351,6 +351,15 @@ def MultiFieldPanel(children, heading="", classname=""):
|
|||
|
||||
|
||||
class BaseFieldPanel(EditHandler):
|
||||
|
||||
@classmethod
|
||||
def widget_overrides(cls):
|
||||
"""check if a specific widget has been defined for this field"""
|
||||
if hasattr(cls, 'widget'):
|
||||
return {cls.field_name: cls.widget}
|
||||
else:
|
||||
return {}
|
||||
|
||||
def __init__(self, instance=None, form=None):
|
||||
super(BaseFieldPanel, self).__init__(instance=instance, form=form)
|
||||
self.bound_field = self.form[self.field_name]
|
||||
|
|
@ -397,11 +406,16 @@ class BaseFieldPanel(EditHandler):
|
|||
return [self.field_name]
|
||||
|
||||
|
||||
def FieldPanel(field_name, classname=""):
|
||||
return type(str('_FieldPanel'), (BaseFieldPanel,), {
|
||||
def FieldPanel(field_name, classname="", widget=None):
|
||||
base = {
|
||||
'field_name': field_name,
|
||||
'classname': classname,
|
||||
})
|
||||
}
|
||||
|
||||
if widget:
|
||||
base['widget'] = widget
|
||||
|
||||
return type(str('_FieldPanel'), (BaseFieldPanel,), base)
|
||||
|
||||
|
||||
class BaseRichTextFieldPanel(BaseFieldPanel):
|
||||
|
|
|
|||
Loading…
Reference in a new issue