[Erp5-report] r38054 fabien - /erp5/trunk/products/ERP5Form/MultiRelationField.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Aug 27 17:04:43 CEST 2010


Author: fabien
Date: Fri Aug 27 17:04:38 2010
New Revision: 38054

URL: http://svn.erp5.org?rev=38054&view=rev
Log:
In multi relation field non editalbe mode, display link on each value in the field instead of the
plane icon. This make much more easier to go on an element from the multi relation_field
list (you don't need to go on the Jump Relation view to be able to select one
value).
The behaviour of editable multi relation fields (the most used in erp5) is not
changed.

Reviewed by romain.

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

Modified: erp5/trunk/products/ERP5Form/MultiRelationField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/MultiRelationField.py?rev=38054&r1=38053&r2=38054&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/MultiRelationField.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/MultiRelationField.py [utf8] Fri Aug 27 17:04:38 2010
@@ -303,16 +303,35 @@ class MultiRelationStringFieldWidget(Wid
   def render_view(self, field, value, REQUEST=None, render_prefix=None):
     """
     Render read only field.
-
-    XXX Improved rendering required
     """
-    html_string = self.default_widget_rendering_instance.render_view(
-                                                 field, value, REQUEST=REQUEST)
-    if REQUEST is None:
-      REQUEST = get_request()
-    relation_html_string = self.render_relation_link(field, value, REQUEST)
-    if relation_html_string != '':
-      html_string += '  %s' % relation_html_string
+    html_string = ''
+    here = REQUEST['here']
+    portal_url = getToolByName(here, 'portal_url')
+    portal_url_string = portal_url()
+    if (value not in ((), [], None, '')) and \
+        field.get_value('allow_jump'):
+      string_list = []
+      base_category = field.get_value('base_category')
+      portal_type = map(lambda x:x[0],field.get_value('portal_type'))
+      kw = {}
+      for k, v in field.get_value('parameter_list') :
+        kw[k] = v
+      accessor_name = 'get%sValueList' % ''.join([part.capitalize() for part in base_category.split('_')])
+      jump_reference_list = getattr(here, accessor_name)(portal_type=portal_type, filter=kw)
+      if len(jump_reference_list):
+        for jump_reference in jump_reference_list:
+          string_list.append('<a href="%s">%s</a>' % \
+                  (jump_reference.absolute_url(),
+                   jump_reference.getTitle()))
+      html_string = '<br />'.join(string_list)
+    else:
+      html_string = self.default_widget_rendering_instance.render_view(field,
+          value, REQUEST=REQUEST)
+      if REQUEST is None:
+        REQUEST = get_request()
+      relation_html_string = self.render_relation_link(field, value, REQUEST)
+      if relation_html_string != '':
+        html_string += '&nbsp;&nbsp;%s' % relation_html_string
     return html_string
 
   def render_wheel(self, field, value, REQUEST, relation_index=0,




More information about the Erp5-report mailing list