diff --git a/product/Formulator/Field.py b/product/Formulator/Field.py index 57f1076e13dac2f87bf0cce9758ac7edc2305842..d9d4e31d3068b2f75f7e6b905542fbc714377b5c 100644 --- a/product/Formulator/Field.py +++ b/product/Formulator/Field.py @@ -283,6 +283,10 @@ class Field: 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_odg') + def render_odg(self, as_string=False, local_name='p', attr_dict=None): + return self.widget.render_odg(self, as_string, local_name, attr_dict=attr_dict) + security.declareProtected('View', 'render_css') def render_css(self, REQUEST=None): """ diff --git a/product/Formulator/Widget.py b/product/Formulator/Widget.py index 8d390e5362321cc8dd520f6df72059305c570651..575c48a2a3b1647881ecf157f3ee7ccdd4d2dc57 100644 --- a/product/Formulator/Widget.py +++ b/product/Formulator/Widget.py @@ -190,12 +190,11 @@ class Widget: return etree.tostring(text_node) return text_node - def render_odg(self, field, value, as_string=True, attr_dict=None, - REQUEST=None, render_prefix=None): + def render_odg(self, field, as_string, local_name, attr_dict=None): """ Default render odg for widget - to be overwritten in field classes. Return a field value rendered in odg format. - as_string is True (default) the returned value is a string (xml + if as_string is True (default) the returned value is a string (xml reprensation of the node), if it's False, the value returned is the node object. attr_dict can be used for additional parameters (like style). @@ -279,29 +278,24 @@ class TextWidget(Widget): return "<span class='%s'>%s</span>" % (css_class, value) return value - def render_odg(self, field, value=None, as_string=True, attr_dict=None, REQUEST=None, render_prefix=None): + def render_odg(self, field, as_string, local_name, attr_dict=None): """ Return a field value rendered in odg format. - as_string is True (default) the returned value is a string (xml + if as_string is True (default) the returned value is a string (xml reprensation of the node), if it's False, the value returned is the node object. attr_dict can be used for additional parameters (like style). """ if attr_dict is None: attr_dict = {} - draw_node = Element('{%s}%s' % (DRAW_URI, 'text-box'), nsmap=NSMAP) - text_node = Element('{%s}%s' % (TEXT_URI, 'p'), + text_node = Element('{%s}%s' % (TEXT_URI, local_name), nsmap=NSMAP) - draw_node.append(text_node) - # get the field value - new_text_value = field.get_value('default') - text_node.text = new_text_value + text_node.text = field.get_value('default').decode('utf-8') text_node.attrib.update(attr_dict) - if as_string: return etree.tostring(draw_node) return draw_node @@ -478,7 +472,7 @@ class TextAreaWidget(Widget): if attr_dict is None: attr_dict = {} text_node = Element('{%s}%s' % (TEXT_URI, local_name), nsmap=NSMAP) - value = field.get_value('default') + value = field.get_value('default') if isinstance(value, (str, unicode)): if isinstance(value, str): value = value.decode('utf-8')