[Erp5-report] r12093 - in /erp5/trunk/products/ERP5Form: ListBox.py www/ListBox_asHTML.zpt

nobody at svn.erp5.org nobody at svn.erp5.org
Sun Jan 14 21:02:34 CET 2007


Author: jerome
Date: Sun Jan 14 21:02:30 2007
New Revision: 12093

URL: http://svn.erp5.org?rev=12093&view=rev
Log:
reuse editable field to render stat line in HTML


Modified:
    erp5/trunk/products/ERP5Form/ListBox.py
    erp5/trunk/products/ERP5Form/www/ListBox_asHTML.zpt

Modified: erp5/trunk/products/ERP5Form/ListBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ListBox.py?rev=12093&r1=12092&r2=12093&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ListBox.py (original)
+++ erp5/trunk/products/ERP5Form/ListBox.py Sun Jan 14 21:02:30 2007
@@ -939,7 +939,7 @@
           params.setdefault('meta_type', meta_type_list)
 
         # Remove useless parameters as FileUpload
-        for k, v in params.items():          
+        for k, v in params.items():
           if k == "listbox":
             # listbox can also contain useless parameters
             new_list = []
@@ -948,7 +948,7 @@
                 if v1 in (None, '') or hasattr(v1, 'read'):
                   del line[k1]
               new_list.append(line)
-            params[k] = new_list                            
+            params[k] = new_list
           if v in (None, '') or hasattr(v, 'read'):
             del params[k]
 
@@ -991,6 +991,16 @@
     return params
 
   getParamDict = VolatileCachingMethod(getParamDict)
+
+  def getEditableField(self, alias):
+    """Get an editable field for column, using column alias.
+    Return None if a field for this column does not exist.
+    """
+    form = self.getForm()
+    editable_field_id = '%s_%s' % (self.getId(), alias)
+    if form.has_field(editable_field_id):
+      return form.get_field(editable_field_id)
+    return None
 
   def getListMethod(self):
     """Return the list method object.
@@ -1377,6 +1387,10 @@
         else:
           original_value = stat_method
           processed_value = original_value
+      
+      editable_field = self.getEditableField(alias)
+      if editable_field is not None:
+        processed_value = editable_field.render_view(value=original_value)
 
       if not isinstance(processed_value, unicode):
         processed_value = unicode(str(processed_value), self.getEncoding())
@@ -1815,17 +1829,15 @@
         brain = self.getBrain()
 
         # Use a widget, if any.
-        editable_field_id = '%s_%s' % (self.renderer.getId(), alias)
+        editable_field = self.renderer.getEditableField(alias)
         tales = False
-        form = self.renderer.getForm()
-        if form.has_field(editable_field_id):
-          editable_field = form.get_field(editable_field_id)
+        if editable_field is not None:
           tales = editable_field.tales.get('default', '')
           if tales:
             original_value = editable_field.__of__(obj).get_value('default',
                                                         cell=brain)
             processed_value = original_value
-
+        
         # If a tales expression is not defined, get a skin, an accessor or a property.
         if not tales:
           if hasattr(aq_self(brain), alias):
@@ -1925,11 +1937,9 @@
 
       # If a field is editable, generate an input form.
       # XXX why don't we generate an input form when a widget is not defined?
-      editable_field_id = '%s_%s' % (field_id, alias)
-      if not self.isSummary() and form.has_field(editable_field_id):
-        editable_field = form.get_field(editable_field_id)
-      else:
-        editable_field = None
+      editable_field = None
+      if not self.isSummary():
+        editable_field = self.renderer.getEditableField(alias)
 
       # Prepare link value - we now use it for both static and field rendering
       no_link = False
@@ -1976,7 +1986,7 @@
 
       if editable_field is not None and sql in editable_column_id_set:
         # XXX what if the object does not have uid?
-        key = '%s_%s' % (editable_field_id, self.getUid())
+        key = '%s_%s' % (editable_field.getId(), self.getUid())
         widget_key = editable_field.generate_field_key(key=key)
         if has_error: # If there is any error on listbox, we should use what the user has typed
           display_value = None

Modified: erp5/trunk/products/ERP5Form/www/ListBox_asHTML.zpt
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/www/ListBox_asHTML.zpt?rev=12093&r1=12092&r2=12093&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/www/ListBox_asHTML.zpt (original)
+++ erp5/trunk/products/ERP5Form/www/ListBox_asHTML.zpt Sun Jan 14 21:02:30 2007
@@ -310,7 +310,7 @@
                 <td class="Data" align="left"
                   tal:define="original_value python: value[0]; processed_value python: value[1]"
                   tal:attributes="align python: isinstance(original_value, (float, int, long)) and 'right' or 'left'"
-                  tal:content="processed_value" />
+                  tal:content="structure processed_value" />
               </tal:block>
             </tr>
           </table>




More information about the Erp5-report mailing list