Skip to content
Snippets Groups Projects
Commit 96741f69 authored by Todd Dembrey's avatar Todd Dembrey
Browse files

Update the edit handlers for 2.0

parent 4af8a33b
No related branches found
No related tags found
No related merge requests found
......@@ -5,7 +5,7 @@ from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from wagtail.core.models import Page
from wagtail.admin.edit_handlers import BaseFieldPanel, EditHandler, FieldPanel
from wagtail.admin.edit_handlers import EditHandler, FieldPanel
def reverse_edit(obj):
......@@ -39,10 +39,15 @@ class DisplayField(Field):
widget = ReadonlyWidget
class BaseReadOnlyPanel(EditHandler):
class ReadOnlyPanel(EditHandler):
template = 'wagtailadmin/edit_handlers/single_field_panel.html'
field_template = 'wagtailadmin/shared/field.html'
def __init__(self, attr, **kwargs):
self.attr = attr
super().__init__(**kwargs)
self.heading = pretty_name(self.attr) if self.heading is None else self.heading
def context(self):
try:
value = getattr(self.instance, self.attr)
......@@ -68,53 +73,12 @@ class BaseReadOnlyPanel(EditHandler):
return render_to_string(self.field_template, self.context())
class ReadOnlyPanel:
def __init__(self, attr, heading=None, classname=''):
self.attr = attr
self.heading = pretty_name(self.attr) if heading is None else heading
self.classname = classname
def bind_to_model(self, model):
kwargs = {
'attr': self.attr,
'heading': self.heading,
'classname': self.classname,
}
return type(str(_('ReadOnlyPanel')), (BaseReadOnlyPanel,), kwargs)
class BaseReadOnlyInlinePanel(BaseReadOnlyPanel):
class ReadOnlyInlinePanel(ReadOnlyPanel):
template = 'wagtailadmin/edit_handlers/multi_field_panel.html'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def on_model_bound(self, model):
values = getattr(self.instance, self.attr).all()
self.children = [BaseReadOnlyPanel(value, form=self.form) for value in values]
class ReadOnlyInlinePanel:
def __init__(self, attr, heading=None, classname='', help_text=''):
self.attr = attr
self.heading = pretty_name(self.attr) if heading is None else heading
self.classname = classname
self.help_text = help_text
def bind_to_model(self, model):
kwargs = {
'attr': self.attr,
'heading': self.heading,
'classname': self.classname,
'help_text': self.help_text
}
return type(str(_('ReadOnlyPanel')), (BaseReadOnlyInlinePanel,), kwargs)
class BaseFilteredFieldPanel(BaseFieldPanel):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
target_model = self.bound_field.field.queryset.model
self.bound_field.field.queryset = target_model.objects.filter(**self.filter_query)
self.children = [ReadOnlyPanel(value, form=self.form) for value in values]
class FilteredFieldPanel(FieldPanel):
......@@ -122,15 +86,6 @@ class FilteredFieldPanel(FieldPanel):
self.filter_query = filter_query
super().__init__(*args, **kwargs)
def bind_to_model(self, model):
base = {
'model': model,
'field_name': self.field_name,
'classname': self.classname,
'filter_query': self.filter_query
}
if self.widget:
base['widget'] = self.widget
return type(str('_BaseFilteredFieldPanel'), (BaseFilteredFieldPanel,), base)
def on_model_bound(self, model):
target_model = self.bound_field.field.queryset.model
self.bound_field.field.queryset = target_model.objects.filter(**self.filter_query)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment