From 8bf71423a01c13a680952f03d6ac3f851e47316b Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Thu, 1 Mar 2018 20:55:01 +0000
Subject: [PATCH] Update for the inline read only form

---
 opentech/apply/funds/edit_handlers.py | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/opentech/apply/funds/edit_handlers.py b/opentech/apply/funds/edit_handlers.py
index 6f7f3d273..42032cc98 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):
-- 
GitLab