From 72a60f52462eacdf1ba6e46d91fc3bf217d3487f Mon Sep 17 00:00:00 2001 From: Romain Courteaud <romain@nexedi.com> Date: Fri, 21 May 2010 16:12:00 +0000 Subject: [PATCH] Recursively search the editable_field in the field libraries. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@35540 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Form/ListBox.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/product/ERP5Form/ListBox.py b/product/ERP5Form/ListBox.py index 981c5715ad..4e85fb6128 100644 --- a/product/ERP5Form/ListBox.py +++ b/product/ERP5Form/ListBox.py @@ -41,7 +41,7 @@ from Products.CMFCore.utils import getToolByName from Products.ZSQLCatalog.zsqlbrain import ZSQLBrain from Products.ERP5Type.Message import Message -from Acquisition import aq_base, aq_self +from Acquisition import aq_base, aq_self, aq_inner import Acquisition from zLOG import LOG, WARNING from ZODB.POSException import ConflictError @@ -1207,16 +1207,22 @@ class ListBoxRenderer: """ form = self.getForm() editable_field_id = '%s_%s' % (self.getUnprefixedId(), alias) - if form.has_field(editable_field_id, include_disabled=1): - return form.get_field(editable_field_id, include_disabled=1) - - # if we are rendering a proxy field, also look for editable fields from the - # template field's form. - if self.field.has_value('form_id'): - form = getattr(self.field, self.field.get_value('form_id'), None) - if form and form.has_field(editable_field_id, include_disabled=1): + field = self.field + while form is not None: + #Search the editable field in the form + if form.has_field(editable_field_id, include_disabled=1): return form.get_field(editable_field_id, include_disabled=1) - + elif field.meta_type == 'ProxyField': + # if we are rendering a proxy field, also look for editable + # fields from the template field's form. + field = field.getTemplateField() + if field is None: + form = None + else: + form = aq_inner(field).aq_parent + else: + form = None + return None def getListMethod(self): -- 2.30.9