[Erp5-report] r32789 nicolas - in /erp5/trunk/products/Formulator: Field.py Widget.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Feb 18 15:39:20 CET 2010
Author: nicolas
Date: Thu Feb 18 15:39:20 2010
New Revision: 32789
URL: http://svn.erp5.org?rev=32789&view=rev
Log:
Implement render_odt_view. eg. The read-only renderer for ooo
* all widget.render_odt are renamed to widget.render_odt_view
* field.render_odt call widget.render_odt or widget.render_odt_view
according request parameter (editable_mode) or field configuration.
* Backward compatibility is kept: widget.render_odt fallback to widget.render_odt_view
* CheckBoxField now implement both editable modes
Reviewed by Romain
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=32789&r1=32788&r2=32789&view=diff
==============================================================================
--- erp5/trunk/products/Formulator/Field.py [utf8] (original)
+++ erp5/trunk/products/Formulator/Field.py [utf8] Thu Feb 18 15:39:20 2010
@@ -204,6 +204,20 @@
return self.widget.render(self, key, value, REQUEST,
render_prefix=render_prefix)
+ security.declarePrivate('_render_helper')
+ def _render_odt_helper(self, key, value, as_string, ooo_builder,
+ REQUEST, render_prefix, attr_dict, local_name):
+ value = self._get_default(key, value, REQUEST)
+ __traceback_info__ = ('key=%s value=%r' % (key, value))
+ if not self.get_value('editable', REQUEST=REQUEST):
+ return self.widget.render_odt_view(self, value, as_string, ooo_builder,
+ REQUEST, render_prefix, attr_dict,
+ local_name)
+ else:
+ return self.widget.render_odt(self, value, as_string, ooo_builder,
+ REQUEST, render_prefix, attr_dict,
+ local_name)
+
security.declarePrivate('_get_default')
def _get_default(self, key, value, REQUEST):
if value is not None:
@@ -286,11 +300,19 @@
def render_odt(self, key=None, value=None, as_string=True, ooo_builder=None,
REQUEST=None, render_prefix=None, attr_dict=None, local_name='p',
key_prefix=None):
- widget_key = self.generate_field_key(key=key, key_prefix=key_prefix)
- value = self._get_default(widget_key, value, REQUEST)
- return self.widget.render_odt(self, value, as_string, ooo_builder,
- REQUEST, render_prefix, attr_dict,
- local_name)
+ field_key = self.generate_field_key(key=key, key_prefix=key_prefix)
+ return self._render_odt_helper(field_key, value, as_string,
+ ooo_builder, REQUEST, render_prefix,
+ attr_dict, local_name)
+
+ security.declareProtected('View', 'render_odt_view')
+ def render_odt_view(self, value=None, as_string=True, ooo_builder=None,
+ REQUEST=None, render_prefix=None, attr_dict=None, local_name='p'):
+ """Call read-only renderer
+ """
+ return self.widget.render_odt_view(self, value, as_string, ooo_builder,
+ REQUEST, render_prefix, attr_dict,
+ local_name)
security.declareProtected('View', 'render_odg')
def render_odg(self, key=None, value=None, as_string=True, ooo_builder=None,
Modified: erp5/trunk/products/Formulator/Widget.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/Widget.py?rev=32789&r1=32788&r2=32789&view=diff
==============================================================================
--- erp5/trunk/products/Formulator/Widget.py [utf8] (original)
+++ erp5/trunk/products/Formulator/Widget.py [utf8] Thu Feb 18 15:39:20 2010
@@ -175,9 +175,18 @@
return 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.
+ render_prefix, attr_dict, local_name):
+ """This render dedicated to render fields inside OOo document
+ (eg. editable mode)
+ """
+ # XXX By default fallback to render_odt_view
+ return self.render_odt_view(field, value, as_string, ooo_builder, REQUEST,
+ render_prefix, attr_dict, local_name)
+
+ def render_odt_view(self, field, value, as_string, ooo_builder, REQUEST,
+ render_prefix, attr_dict, local_name):
+ """
+ Return a field value rendered in odt format as read-only mode.
- as_string return value as string or as xml object
- attr_dict can be used for additional attributes (like style).
- ooo_builder wrapper of ODF zipped archive usefull to insert images
@@ -234,7 +243,7 @@
draw_node.append(text_p_node)
draw_frame_node.append(draw_node)
- # XXX copy from render_odt, need to be unified
+ # XXX copy from render_odt_view, need to be unified
def replaceCharsByNode(match_object):
#global text_span_node
if match_object.group(1) is None:
@@ -416,7 +425,7 @@
"""
<form:checkbox form:name="is_accepted"
form:control-implementation="ooo:com.sun.star.form.component.CheckBox"
- checkbox form:current-state="checked"
+ form:current-state="checked"
form:id="control1"
form:image-position="center">
<form:properties>
@@ -447,6 +456,24 @@
if as_string:
return etree.tostring(form_node)
return form_node
+
+ def render_odt_view(self, field, value, as_string, ooo_builder, REQUEST,
+ render_prefix, attr_dict, local_name):
+ """
+ """
+ if attr_dict is None:
+ attr_dict = {}
+ if isinstance(value, int):
+ value = str(value)
+ if isinstance(value, str):
+ #required by lxml
+ value = value.decode('utf-8')
+ text_node = Element('{%s}%s' % (TEXT_URI, local_name), nsmap=NSMAP)
+ text_node.text = value
+ text_node.attrib.update(attr_dict)
+ if as_string:
+ return etree.tostring(text_node)
+ return text_node
CheckBoxWidgetInstance = CheckBoxWidget()
@@ -495,7 +522,7 @@
return ''
return value
- def render_odt(self, field, value, as_string, ooo_builder, REQUEST,
+ def render_odt_view(self, field, value, as_string, ooo_builder, REQUEST,
render_prefix, attr_dict, local_name):
if attr_dict is None:
attr_dict = {}
@@ -562,14 +589,14 @@
value = [value]
return string.join(value, field.get_value('view_separator'))
- def render_odt(self, field, value, as_string, ooo_builder, REQUEST,
+ def render_odt_view(self, field, value, as_string, ooo_builder, REQUEST,
render_prefix, attr_dict, local_name):
if value is None:
value = ['']
elif isinstance(value, (str, unicode)):
value = [value]
value = '\n'.join(value)
- return TextAreaWidget.render_odt(self, field, value, as_string,
+ return TextAreaWidget.render_odt_view(self, field, value, as_string,
ooo_builder, REQUEST, render_prefix,
attr_dict, local_name)
@@ -1329,7 +1356,7 @@
def render_pdf(self, field, value, render_prefix=None):
return self.format_value(field, value, mode='pdf')
- def render_odt(self, field, value, as_string, ooo_builder, REQUEST,
+ def render_odt_view(self, field, value, as_string, ooo_builder, REQUEST,
render_prefix, attr_dict, local_name):
"""
Return a field value rendered in odt format.
@@ -1661,7 +1688,7 @@
'format': format,
'type': 'float'}
- def render_odt(self, field, value, as_string, ooo_builder, REQUEST,
+ def render_odt_view(self, field, value, as_string, ooo_builder, REQUEST,
render_prefix, attr_dict, local_name):
if attr_dict is None:
attr_dict = {}
More information about the Erp5-report
mailing list