diff --git a/product/ERP5Form/MultiRelationField.py b/product/ERP5Form/MultiRelationField.py index 3dcf26378a6d8e81fac27c0b2278a0e08755f023..e230f2694605983e8b93884f4f956130ceca977b 100644 --- a/product/ERP5Form/MultiRelationField.py +++ b/product/ERP5Form/MultiRelationField.py @@ -62,9 +62,10 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget, local_property_names = ['update_method', 'jump_method', 'allow_jump', 'base_category', 'portal_type', 'allow_creation', 'container_getter_id', 'catalog_index', - 'relation_setter_id', 'relation_form_id', 'columns', 'sort', - 'parameter_list','list_method', - 'first_item', 'items', 'size', 'extra_item', + 'relation_setter_id', 'relation_form_id', 'columns', + 'sort', 'parameter_list','list_method', + 'first_item', 'items', 'proxy_listbox_ids', + 'size', 'extra_item', ] property_names = Widget.LinesTextAreaWidget.property_names + \ @@ -180,6 +181,12 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget, default='', required=0) + proxy_listbox_ids = fields.ListTextAreaField('proxy_listbox_ids', + title='Proxy Listbox IDs', + description=('A list of listbox that can be used as proxy'), + default='', + required=0) + # delete double in order to keep a usable ZMI... # XXX need to keep order ! #property_names = dict([(i,0) for i in property_names]).keys() diff --git a/product/ERP5Form/SelectionTool.py b/product/ERP5Form/SelectionTool.py index 086e9e081ee2744fc9d6acd46ba50f361d01b1bd..2577766b28d099d501ab1e6be6913e79d564376f 100644 --- a/product/ERP5Form/SelectionTool.py +++ b/product/ERP5Form/SelectionTool.py @@ -1072,7 +1072,8 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ): # Field found field_key = field.generate_field_key() field_value = REQUEST.form[field_key] - dialog_id = field.get_value('relation_form_id') or 'Base_viewRelatedObjectList' + dialog_id = field.get_value('relation_form_id') or \ + 'Base_viewRelatedObjectList' redirect_form = getattr(o, dialog_id) # XXX Hardcoded listbox field selection_name = redirect_form.listbox.get_value('selection_name') @@ -1108,6 +1109,8 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ): field_value = '' if len(field_value) == 1: field_value = field_value[0] + if len(field_value) > 1 and isinstance(field_value, type([])): + field_value = ' OR '.join(field_value) REQUEST.form[field_key] = field_value portal_status_message = Message( domain='erp5_ui', @@ -1143,7 +1146,15 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ): kw['portal_status_message'] = portal_status_message kw['saved_form_data'] = saved_form_data - # Empty the selection (uid) + proxy_listbox_ids = field.get_value('proxy_listbox_ids') + REQUEST.set('proxy_listbox_ids', proxy_listbox_ids) + if len(proxy_listbox_ids) > 0: + REQUEST.set('proxy_listbox_id', proxy_listbox_ids[0][0]) + else: + REQUEST.set('proxy_listbox_id', \ + "Base_viewRelatedObjectListBase/listbox") + + # Empty the selection (uid) REQUEST.form = kw # New request form # Define new HTTP_REFERER REQUEST.HTTP_REFERER = '%s/%s' % (o.absolute_url(),