[Erp5-report] r31043 nicolas - /erp5/trunk/products/Formulator/Widget.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Dec 3 16:40:12 CET 2009
Author: nicolas
Date: Thu Dec 3 16:40:10 2009
New Revision: 31043
URL: http://svn.erp5.org?rev=31043&view=rev
Log:
Implement render_odt for CheckBox
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=31043&r1=31042&r2=31043&view=diff
==============================================================================
--- erp5/trunk/products/Formulator/Widget.py [utf8] (original)
+++ erp5/trunk/products/Formulator/Widget.py [utf8] Thu Dec 3 16:40:10 2009
@@ -9,15 +9,22 @@
from urlparse import urljoin
from lxml import etree
from lxml.etree import Element, SubElement
+from lxml.builder import ElementMaker
import re
-
DRAW_URI = 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0'
TEXT_URI = 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'
+FORM_URI = 'urn:oasis:names:tc:opendocument:xmlns:form:1.0'
+OFFICE_URI = 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'
+
NSMAP = {
'draw': DRAW_URI,
- 'text': TEXT_URI
+ 'text': TEXT_URI,
+ 'form': FORM_URI,
+ 'office': OFFICE_URI,
}
+
+EForm = ElementMaker(namespace=FORM_URI, nsmap=NSMAP)
class Widget:
"""A field widget that knows how to display itself as HTML.
@@ -382,6 +389,44 @@
css_class=field.get_value('css_class'),
extra=field.get_value('extra'),
disabled='disabled')
+
+ def render_odt(self, field, as_string, local_name, attr_dict=None):
+ """
+ <form:checkbox form:name="is_accepted"
+ form:control-implementation="ooo:com.sun.star.form.component.CheckBox"
+ checkbox form:current-state="checked"
+ form:id="control1"
+ form:image-position="center">
+ <form:properties>
+ <form:property form:property-name="DefaultControl" office:value-type="string" office:string-value="com.sun.star.form.control.CheckBox"/>
+ <form:property form:property-name="SecondaryRefValue" office:value-type="string" office:string-value=""/>
+ </form:properties>
+ </form:checkbox>
+ """
+ if attr_dict is None:
+ attr_dict = {}
+ form_node = EForm.checkbox(
+ EForm.properties(
+ EForm.property(**{'{%s}property-name' % FORM_URI: 'DefaultControl',
+ '{%s}value-type' % OFFICE_URI: 'string',
+ '{%s}string-value' % OFFICE_URI: 'com.sun.star.form.control.CheckBox'}),
+ EForm.property(**{'{%s}property-name' % FORM_URI: 'SecondaryRefValue',
+ '{%s}value-type' % OFFICE_URI: 'string',
+ '{%s}string-value' % OFFICE_URI: ''}),
+ )
+ )
+
+ checked = field.get_value('default')
+ current_state_attribute_name = '{%s}current-state'% FORM_URI
+ if checked:
+ attr_dict.update({current_state_attribute_name: 'checked'})
+ elif attr_dict.has_key(current_state_attribute_name):
+ del attr_dict[current_state_attribute_name]
+ form_node.attrib.update(attr_dict)
+ if as_string:
+ return etree.tostring(form_node)
+ return form_node
+
CheckBoxWidgetInstance = CheckBoxWidget()
class TextAreaWidget(Widget):
More information about the Erp5-report
mailing list