[Erp5-report] r31495 fabien - /erp5/trunk/products/Formulator/Widget.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Dec 28 16:44:35 CET 2009


Author: fabien
Date: Mon Dec 28 16:44:35 2009
New Revision: 31495

URL: http://svn.erp5.org?rev=31495&view=rev
Log:
- change some methods signature to be consistent with other renderer
- don't get the value from the field, this should be done by the caller and
  passed to methods using value parameter (in render_*, value should be "ready
  to use")
- change the way to get attributes because the dict structure change
- add a renderer for DateTime fields

Modified:
    erp5/trunk/products/Formulator/Widget.py

Modified: erp5/trunk/products/Formulator/Widget.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/Widget.py?rev=31495&r1=31494&r2=31495&view=diff
==============================================================================
--- erp5/trunk/products/Formulator/Widget.py [utf8] (original)
+++ erp5/trunk/products/Formulator/Widget.py [utf8] Mon Dec 28 16:44:35 2009
@@ -174,7 +174,8 @@
     """
     return None
 
-  def render_odt(self, field, as_string, local_name, attr_dict=None):
+  def render_odt(self, field, value, as_string, ooo_builder, REQUEST,
+      render_prefix, attr_dict, local_name):
     """
       Return a field value rendered in odt format.
       - as_string return value as string or as xml object
@@ -183,15 +184,14 @@
     if attr_dict is None:
       attr_dict = {}
     text_node = Element('{%s}%s' % (TEXT_URI, local_name), nsmap=NSMAP)
-    # get the field value
-    text_node.text = field.get_value('default').decode('utf-8')
+    text_node.text = value
     text_node.attrib.update(attr_dict)
     if as_string:
       return etree.tostring(text_node)
     return text_node
 
-  def render_odg(self, field, as_string, local_name, target_node=None,
-      printout=None, REQUEST=None, ooo_builder=None, attr_dict=None):
+  def render_odg(self, field, value, as_string, ooo_builder, REQUEST,
+      render_prefix, attr_dict):
     """
       Default render odg for widget - to be overwritten in field classes.
       Return a field node rendered in odg format.
@@ -203,30 +203,21 @@
     if attr_dict is None:
       attr_dict = {}
 
-    # get the field value
-    value = field.get_value('default')
-    if isinstance(value, (str, unicode)):
-      if isinstance(value, str):
-        value = value.decode('utf-8')
-      value = [value]
-    value = '\n'.join(value)
-    value.replace('\r', '')
-
     draw_frame_tag_name = '{%s}%s' % (DRAW_URI, 'frame')
     draw_frame_node = Element(draw_frame_tag_name, nsmap=NSMAP)
-    draw_frame_node.attrib.update(attr_dict.get(draw_frame_tag_name, {}))
+    draw_frame_node.attrib.update(attr_dict.get(draw_frame_tag_name, {}).pop(0))
 
     draw_tag_name = '{%s}%s' % (DRAW_URI, 'text-box')
     draw_node = Element(draw_tag_name, nsmap=NSMAP)
-    draw_node.attrib.update(attr_dict.get(draw_tag_name, {}))
-
-    text_p_tag_name = '{%s}%s' % (TEXT_URI, local_name)
+    draw_node.attrib.update(attr_dict.get(draw_tag_name, {}).pop(0))
+
+    text_p_tag_name = '{%s}%s' % (TEXT_URI, 'p')
     text_p_node = Element(text_p_tag_name, nsmap=NSMAP)
-    text_p_node.attrib.update(attr_dict.get(text_p_tag_name, {}))
+    text_p_node.attrib.update(attr_dict.get(text_p_tag_name, {}).pop(0))
 
     text_span_tag_name = '{%s}%s' % (TEXT_URI, 'span')
     text_span_node =  Element(text_span_tag_name, nsmap=NSMAP)
-    text_span_node.attrib.update(attr_dict.get(text_span_tag_name, {}))
+    text_span_node.attrib.update(attr_dict.get(text_span_tag_name, {}).pop(0))
 
     text_p_node.append(text_span_node)
     draw_node.append(text_p_node)
@@ -409,7 +400,8 @@
                             extra=field.get_value('extra'),
                             disabled='disabled')
 
-  def render_odt(self, field, as_string, local_name, attr_dict=None):
+  def render_odt(self, field, value, as_string, ooo_builder, REQUEST,
+      render_prefix, attr_dict, local_name):
     """
     <form:checkbox form:name="is_accepted"
                    form:control-implementation="ooo:com.sun.star.form.component.CheckBox"
@@ -435,9 +427,8 @@
                   )
                 )
 
-    checked = field.get_value('default')
     current_state_attribute_name = '{%s}current-state'% FORM_URI
-    if checked:
+    if value:
       attr_dict.update({current_state_attribute_name: 'checked'})
     elif attr_dict.has_key(current_state_attribute_name):
       del attr_dict[current_state_attribute_name]
@@ -493,17 +484,11 @@
           return ''
         return value
 
-    def render_odt(self, field, as_string, local_name, attr_dict=None):
+    def render_odt(self, field, value, as_string, ooo_builder, REQUEST,
+        render_prefix, attr_dict, local_name):
         if attr_dict is None:
             attr_dict = {}
         text_node = Element('{%s}%s' % (TEXT_URI, local_name), nsmap=NSMAP)
-        value = field.get_value('default')
-        if isinstance(value, (str, unicode)):
-          if isinstance(value, str):
-            value = value.decode('utf-8')
-          value = [value]
-        value = '\n'.join(value)
-        value.replace('\r', '')
         def replaceCharsByNode(match_object):
             #global text_node
             if match_object.group(1) is None:
@@ -1290,7 +1275,8 @@
   def render_pdf(self, field, value, render_prefix=None):
     return self.format_value(field, value, mode='pdf')
 
-  def render_odt(self, field, as_string, local_name, attr_dict=None):
+  def render_odt(self, field, value, as_string, ooo_builder, REQUEST,
+      render_prefix, attr_dict, local_name):
     """
       Return a field value rendered in odt format.
       - as_string return value as string or as xml object
@@ -1300,7 +1286,6 @@
       attr_dict = {}
     text_node = Element('{%s}%s' % (TEXT_URI, local_name), nsmap=NSMAP)
     # get the field value
-    value = field.get_value('default')
     if not value and field.get_value('default_now'):
       value = DateTime()
     text_node.text = self.format_value(field, value, mode='pdf').decode('utf-8')
@@ -1308,6 +1293,17 @@
     if as_string:
       return etree.tostring(text_node)
     return text_node
+
+  def render_odg(self, field, value, as_string, ooo_builder, REQUEST,
+      render_prefix, attr_dict):
+    """
+      Return a field value rendered in odt format.
+      - as_string return value as string or as xml object
+      - attr_dict can be used for additional attributes (like style).
+    """
+    return self.render_odt(field=field, value=value, as_string=as_string,
+        ooo_builder=ooo_builder, REQUEST=REQUEST, render_prexix=render_prefix,
+        attr_dict=attr_dict, local_name='p')
 
 DateTimeWidgetInstance = DateTimeWidget()
 
@@ -1612,12 +1608,12 @@
             'format': format,
             'type': 'float'}
 
-  def render_odt(self, field, as_string, local_name, attr_dict=None):
+  def render_odt(self, field, value, as_string, ooo_builder, REQUEST,
+      render_prefix, attr_dict, local_name):
     if attr_dict is None:
       attr_dict = {}
     text_node = Element('{%s}%s' % (TEXT_URI, local_name), nsmap=NSMAP)
-    # get the field value
-    text_node.text = self.format_value(field, field.get_value('default')).decode('utf-8')
+    text_node.text = self.format_value(field, value).decode('utf-8')
     text_node.attrib.update(attr_dict)
     if as_string:
       return etree.tostring(text_node)




More information about the Erp5-report mailing list