[Erp5-report] r22688 - /erp5/trunk/products/ERP5Form/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jul 28 15:51:05 CEST 2008


Author: rafael
Date: Mon Jul 28 15:51:05 2008
New Revision: 22688

URL: http://svn.erp5.org?rev=22688&view=rev
Log:
Added new property at RelationFields and MultiRelationField.

Now is possible to define a set of listboxes that will used in dialog mode. This allow the user chooser (if len > 1) which listbox columns/search, he prefer use to find a certain object.

The approach is diferent of relation_form and define columns but still compatible with previous implementation. If the [multi]relation fields are not updated, be previous behaviour will still working.


Modified:
    erp5/trunk/products/ERP5Form/MultiRelationField.py
    erp5/trunk/products/ERP5Form/SelectionTool.py

Modified: erp5/trunk/products/ERP5Form/MultiRelationField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/MultiRelationField.py?rev=22688&r1=22687&r2=22688&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/MultiRelationField.py (original)
+++ erp5/trunk/products/ERP5Form/MultiRelationField.py Mon Jul 28 15:51:05 2008
@@ -62,9 +62,10 @@
   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 + \
@@ -177,6 +178,12 @@
                                title='List Method',
                                description=('The method to use to list'
                                             'objects'),
+                               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)
 

Modified: erp5/trunk/products/ERP5Form/SelectionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/SelectionTool.py?rev=22688&r1=22687&r2=22688&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/SelectionTool.py (original)
+++ erp5/trunk/products/ERP5Form/SelectionTool.py Mon Jul 28 15:51:05 2008
@@ -1072,7 +1072,8 @@
         # 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 @@
             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 @@
         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(),




More information about the Erp5-report mailing list