[Erp5-report] r31033 nicolas - in /erp5/trunk/products/Formulator: Field.py Widget.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Dec 3 15:47:30 CET 2009
Author: nicolas
Date: Thu Dec 3 15:47:28 2009
New Revision: 31033
URL: http://svn.erp5.org?rev=31033&view=rev
Log:
- Add local_name parameter to overload name of odf nodes 'text:p' or 'text:span'
- Customise render_odt for DateTimeWidget and TextAreaWidget
Modified:
erp5/trunk/products/Formulator/Field.py
erp5/trunk/products/Formulator/Widget.py
Modified: erp5/trunk/products/Formulator/Field.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/Field.py?rev=31033&r1=31032&r2=31033&view=diff
==============================================================================
--- erp5/trunk/products/Formulator/Field.py [utf8] (original)
+++ erp5/trunk/products/Formulator/Field.py [utf8] Thu Dec 3 15:47:28 2009
@@ -280,8 +280,8 @@
render_prefix)
security.declareProtected('View', 'render_odt')
- def render_odt(self, as_string=False, attr_dict=None):
- return self.widget.render_odt(self, as_string, attr_dict=attr_dict)
+ def render_odt(self, as_string=False, local_name='p', attr_dict=None):
+ return self.widget.render_odt(self, as_string, local_name, attr_dict=attr_dict)
security.declareProtected('View', 'render_css')
def render_css(self, REQUEST=None):
Modified: erp5/trunk/products/Formulator/Widget.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/Widget.py?rev=31033&r1=31032&r2=31033&view=diff
==============================================================================
--- erp5/trunk/products/Formulator/Widget.py [utf8] (original)
+++ erp5/trunk/products/Formulator/Widget.py [utf8] Thu Dec 3 15:47:28 2009
@@ -8,8 +8,8 @@
from DocumentTemplate.ustr import ustr
from urlparse import urljoin
from lxml import etree
-from lxml.etree import Element
-
+from lxml.etree import Element, SubElement
+import re
DRAW_URI = 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0'
@@ -167,7 +167,7 @@
"""
return None
- def render_odt(self, field, as_string, attr_dict=None):
+ def render_odt(self, field, as_string, local_name, attr_dict=None):
"""
Return a field value rendered in odt format.
- as_string return value as string or as xml object
@@ -175,7 +175,7 @@
"""
if attr_dict is None:
attr_dict = {}
- text_node = Element('{%s}%s' % (TEXT_URI, 'p'), nsmap=NSMAP)
+ 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.attrib.update(attr_dict)
@@ -428,6 +428,28 @@
if value is None:
return ''
return value
+
+ def render_odt(self, field, as_string, local_name, attr_dict=None):
+ if attr_dict is None:
+ attr_dict = {}
+ text_node = Element('{%s}%s' % (TEXT_URI, local_name), nsmap=NSMAP)
+ value = field.get_value('default').decode('utf-8')
+ value.replace('\r', '')
+ def replaceCharsByNode(match_object):
+ #global text_node
+ if match_object.group(1) is None:
+ text_node.text = match_object.group(2)
+ if match_object.group(1) == '\n':
+ line_break = SubElement(text_node, '{%s}%s' % (TEXT_URI, 'line-break'))
+ line_break.tail = match_object.group(2)
+ if match_object.group(1) == '\t':
+ line_break = SubElement(text_node, '{%s}%s' % (TEXT_URI, 'tab'))
+ line_break.tail = match_object.group(2)
+ re.sub('([\n\t])?([^\n\t]*)', replaceCharsByNode, value)
+ text_node.attrib.update(attr_dict)
+ if as_string:
+ return etree.tostring(text_node)
+ return text_node
TextAreaWidgetInstance = TextAreaWidget()
@@ -1199,7 +1221,7 @@
def render_pdf(self, field, value, render_prefix=None):
return self.format_value(field, value, mode='pdf')
- def render_odt(self, field, as_string, attr_dict=None):
+ def render_odt(self, field, as_string, local_name, attr_dict=None):
"""
Return a field value rendered in odt format.
- as_string return value as string or as xml object
@@ -1207,7 +1229,7 @@
"""
if attr_dict is None:
attr_dict = {}
- text_node = Element('{%s}%s' % (TEXT_URI, 'p'), nsmap=NSMAP)
+ 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'), mode='pdf').decode('utf-8')
text_node.attrib.update(attr_dict)
@@ -1518,6 +1540,17 @@
'format': format,
'type': 'float'}
+ def render_odt(self, field, as_string, local_name, attr_dict=None):
+ 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.attrib.update(attr_dict)
+ if as_string:
+ return etree.tostring(text_node)
+ return text_node
+
FloatWidgetInstance = FloatWidget()
class LinkWidget(TextWidget):
More information about the Erp5-report
mailing list