diff --git a/opentech/apply/funds/edit_handlers.py b/opentech/apply/funds/edit_handlers.py index 6f7f3d273fef9b8b987659b6d9f167989a68f201..42032cc9860544d9d4e039bbd3cf72bf729915bb 100644 --- a/opentech/apply/funds/edit_handlers.py +++ b/opentech/apply/funds/edit_handlers.py @@ -46,7 +46,15 @@ class ReadOnlyPanel(EditHandler): 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 + self.heading = pretty_name(self.attr) if not self.heading else self.heading + + def clone(self): + return self.__class__( + attr=self.attr, + heading=self.heading, + classname=self.classname, + help_text=self.help_text, + ) def context(self): try: @@ -76,9 +84,14 @@ class ReadOnlyPanel(EditHandler): class ReadOnlyInlinePanel(ReadOnlyPanel): template = 'wagtailadmin/edit_handlers/multi_field_panel.html' - def on_model_bound(self, model): + def get_child_edit_handler(self): + child_edit_handler = ReadOnlyPanel(self.attr) + return child_edit_handler.bind_to_model(getattr(self.instance, self.attr)) + + def on_instance_bound(self): values = getattr(self.instance, self.attr).all() - self.children = [ReadOnlyPanel(value, form=self.form) for value in values] + child_panel = self.get_child_edit_handler() + self.children = [child_panel.bind_to_instance(value, form=self.form) for value in values] class FilteredFieldPanel(FieldPanel):