[Erp5-report] r31056 nicolas - /erp5/trunk/products/ERP5OOo/FormPrintout.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Dec 3 18:15:11 CET 2009
Author: nicolas
Date: Thu Dec 3 18:15:06 2009
New Revision: 31056
URL: http://svn.erp5.org?rev=31056&view=rev
Log:
- Change typologie of parameters when they are mandatory (named parameters => positional parameters)
- return element_tree is useless, as the object the same
- code cleanup & word-wrapping
Modified:
erp5/trunk/products/ERP5OOo/FormPrintout.py
Modified: erp5/trunk/products/ERP5OOo/FormPrintout.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/FormPrintout.py?rev=31056&r1=31055&r2=31056&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/FormPrintout.py [utf8] (original)
+++ erp5/trunk/products/ERP5OOo/FormPrintout.py [utf8] Thu Dec 3 18:15:06 2009
@@ -288,9 +288,9 @@
self.odf_existent_name_list = ooo_builder.getNameList()
# content.xml
- ooo_builder = self._replaceContentXml(ooo_builder=ooo_builder, extra_context=extra_context)
+ self._replaceContentXml(ooo_builder, extra_context)
# styles.xml
- ooo_builder = self._replaceStylesXml(ooo_builder=ooo_builder, extra_context=extra_context)
+ self._replaceStylesXml(ooo_builder, extra_context)
# meta.xml is not supported yet
# ooo_builder = self._replaceMetaXml(ooo_builder=ooo_builder, extra_context=extra_context)
@@ -300,7 +300,7 @@
ooo = ooo_builder.render(name=odf_template.title or odf_template.id)
return ooo
- def _replaceContentXml(self, ooo_builder=None, extra_context=None):
+ def _replaceContentXml(self, ooo_builder, extra_context):
"""
Replace the content.xml in an ODF document using an ERP5Form data.
"""
@@ -310,27 +310,20 @@
here = getattr(self, 'aq_parent', None)
content_element_tree = etree.XML(content_xml)
- content_element_tree = self._replaceXmlByForm(element_tree=content_element_tree,
- form=form,
- here=here,
- extra_context=extra_context,
- ooo_builder=ooo_builder)
+ self._replaceXmlByForm(content_element_tree, form, here, extra_context,
+ ooo_builder)
# mapping ERP5Report report method to ODF
report_method=extra_context.get('report_method')
- base_name = (report_method is not None) and report_method.__name__ or None
- content_element_tree = self._replaceXmlByReportSection(element_tree=content_element_tree,
- extra_context=extra_context,
- report_method=report_method,
- base_name=base_name,
- ooo_builder=ooo_builder)
+ base_name = getattr(report_method, '__name__', None)
+ self._replaceXmlByReportSection(content_element_tree, extra_context,
+ report_method, base_name, ooo_builder)
+
content_xml = etree.tostring(content_element_tree, encoding='utf-8')
-
# Replace content.xml in master openoffice template
ooo_builder.replace('content.xml', content_xml)
- return ooo_builder
# this method not supported yet
- def _replaceStylesXml(self, ooo_builder=None, extra_context=None):
+ def _replaceStylesXml(self, ooo_builder, extra_context):
"""
Replace the styles.xml file in an ODF document.
"""
@@ -338,25 +331,21 @@
form = extra_context['form']
here = getattr(self, 'aq_parent', None)
styles_element_tree = etree.XML(styles_xml)
- styles_element_tree = self._replaceXmlByForm(element_tree=styles_element_tree,
- form=form,
- here=here,
- extra_context=extra_context,
- ooo_builder=ooo_builder)
+ self._replaceXmlByForm(styles_element_tree, form, here, extra_context,
+ ooo_builder)
styles_xml = etree.tostring(styles_element_tree, encoding='utf-8')
ooo_builder.replace('styles.xml', styles_xml)
+
+ # this method not implemented yet
+ def _replaceMetaXml(self, ooo_builder, extra_context):
+ """
+ Replace meta.xml file in an ODF document.
+ """
return ooo_builder
- # this method not implemented yet
- def _replaceMetaXml(self, ooo_builder=None, extra_context=None):
- """
- Replace meta.xml file in an ODF document.
- """
- return ooo_builder
-
- def _replaceXmlByForm(self, element_tree=None, form=None, here=None,
- extra_context=None, ooo_builder=None, iteration_index=0):
+ def _replaceXmlByForm(self, element_tree, form, here, extra_context,
+ ooo_builder, iteration_index=0):
"""
Replace an element_tree object using an ERP5 form.
@@ -372,9 +361,8 @@
"""
raise NotImplementedError
- def _replaceXmlByReportSection(self, element_tree=None, extra_context=None,
- report_method=None, base_name=None,
- ooo_builder=None):
+ def _replaceXmlByReportSection(self, element_tree, extra_context, report_method,
+ base_name, ooo_builder):
"""
Replace xml using ERP5Report ReportSection.
Keyword arguments:
@@ -385,7 +373,7 @@
ooo_builder -- the OOo Builder object which has ODF document.
"""
if report_method is None:
- return element_tree
+ return
report_section_list = report_method()
portal_object = self.getPortalObject()
@@ -393,7 +381,7 @@
report_section_list=report_section_list,
element_tree=element_tree)
if target_tuple is None:
- return element_tree
+ return
target_xpath, original_target = target_tuple
office_body = original_target.getparent()
target_index = office_body.index(original_target)
@@ -406,7 +394,7 @@
target_element_tree = deepcopy(temporary_element_tree)
# remove original target in the ODF template
- if index is 0:
+ if index == 0:
office_body.remove(original_target)
else:
self._setUniqueElementName(base_name=base_name,
@@ -414,16 +402,11 @@
xpath=target_xpath,
element_tree=target_element_tree)
- target_element_tree = self._replaceXmlByForm(element_tree=target_element_tree,
- form=form,
- here=here,
- extra_context=extra_context,
- ooo_builder=ooo_builder,
- iteration_index=index)
+ self._replaceXmlByForm(target_element_tree, form, here, extra_context,
+ ooo_builder, iteration_index=index)
office_body.insert(target_index, target_element_tree)
target_index += 1
report_item.popReport(portal_object, render_prefix=None)
- return element_tree
def _pickUpTargetSection(self, base_name='', report_section_list=[], element_tree=None):
"""pick up a ODF target object to iterate ReportSection
@@ -466,11 +449,9 @@
xpath -- xpath expression which was used to search the element
element_tree -- element tree
"""
- if iteration_index is 0:
+ if iteration_index == 0:
return
- def getNameAttribute(target_element=None):
- if target_element is None:
- return None
+ def getNameAttribute(target_element):
attrib = target_element.attrib
for key in attrib.keys():
if key.endswith("}name"):
@@ -478,23 +459,18 @@
return None
odf_element_name = "%s_%s" % (base_name, iteration_index)
result_list = element_tree.xpath(xpath, namespaces=element_tree.nsmap)
- if len(result_list) is 0:
+ if not result_list:
return
target_element = result_list[0]
name_attribute = getNameAttribute(target_element)
if name_attribute is not None:
target_element.set(name_attribute, odf_element_name)
- def _replaceXmlByFormbox(self,
- element_tree=None,
- field=None,
- form=None,
- extra_context=None,
- ooo_builder=None,
- iteration_index=0):
+ def _replaceXmlByFormbox(self, element_tree, field, form, extra_context,
+ ooo_builder, iteration_index=0):
"""
Replace an ODF frame using an ERP5Form form box field.
-
+
Note: This method is incompleted yet. This function is intended to
make an frame hide/show. But it has not such a feature currently.
"""
@@ -502,40 +478,28 @@
enabled = field.get_value('enabled')
draw_xpath = '//draw:frame[@draw:name="%s"]/draw:text-box/*' % field_id
text_list = element_tree.xpath(draw_xpath, namespaces=element_tree.nsmap)
- if len(text_list) == 0:
- return element_tree
+ if not text_list:
+ return
target_element = text_list[0]
frame_paragraph = target_element.getparent()
office_body = frame_paragraph.getparent()
if not enabled:
office_body.remove(frame_paragraph)
- return element_tree
+ return
# set when using report section
- self._setUniqueElementName(base_name=field_id,
- iteration_index=iteration_index,
- xpath=draw_xpath,
- element_tree=element_tree)
- self._replaceXmlByForm(element_tree=frame_paragraph,
- form=form,
- here=extra_context['here'],
- extra_context=extra_context,
- ooo_builder=ooo_builder,
- iteration_index=iteration_index)
- return element_tree
-
- def _replaceXmlByImageField(self,
- element_tree=None,
- image_field=None,
- ooo_builder=None,
- iteration_index=0):
+ self._setUniqueElementName(field_id, iteration_index, draw_xpath, element_tree)
+ self._replaceXmlByForm(frame_paragraph, form, extra_context['here'], extra_context,
+ ooo_builder, iteration_index=iteration_index)
+
+ def _replaceXmlByImageField(self, element_tree, image_field, ooo_builder, iteration_index=0):
"""
Replace an ODF draw:frame using an ERP5Form image field.
"""
alt = image_field.get_value('description') or image_field.get_value('title')
image_xpath = '//draw:frame[@draw:name="%s"]/*' % image_field.id
image_list = element_tree.xpath(image_xpath, namespaces=element_tree.nsmap)
- if len(image_list) is 0:
- return element_tree
+ if not image_list:
+ return
path = image_field.get_value('default')
image_node = image_list[0]
image_frame = image_node.getparent()
@@ -546,7 +510,7 @@
if picture_data is None:
image_frame = image_node.getparent()
image_frame.remove(image_node)
- return element_tree
+ return
picture_type = picture.getContentType()
picture_path = self._createOdfUniqueFileName(path=path, picture_type=picture_type)
ooo_builder.addFileEntry(picture_path, media_type=picture_type, content=picture_data)
@@ -555,11 +519,7 @@
image_frame.set('{%s}width' % element_tree.nsmap['svg'], picture_size[0])
image_frame.set('{%s}height' % element_tree.nsmap['svg'], picture_size[1])
# set when using report section
- self._setUniqueElementName(base_name=image_field.id,
- iteration_index=iteration_index,
- xpath=image_xpath,
- element_tree=element_tree)
- return element_tree
+ self._setUniqueElementName(image_field.id, iteration_index, image_xpath, element_tree)
def _createOdfUniqueFileName(self, path='', picture_type=''):
extension = guess_extension(picture_type)
@@ -608,11 +568,7 @@
return (str(w) + unit, str(h) + unit)
- def _appendTableByListbox(self,
- element_tree=None,
- listbox=None,
- REQUEST=None,
- iteration_index=0):
+ def _appendTableByListbox(self, element_tree, listbox, REQUEST, iteration_index=0):
"""
Append a ODF table using an ERP5 Form listbox.
"""
@@ -620,7 +576,7 @@
table_xpath = '//table:table[@table:name="%s"]' % table_id
# this list should be one item list
target_table_list = element_tree.xpath(table_xpath, namespaces=element_tree.nsmap)
- if len(target_table_list) is 0:
+ if not target_table_list:
return element_tree
target_table = target_table_list[0]
@@ -660,7 +616,7 @@
row = deepcopy(row_top)
row = self._updateColumnValue(row, listbox_column_list)
newtable.append(row)
- is_top = False
+ is_top = False
elif listboxline.isDataLine() and is_top:
if style_name_row_dictionary.has_key(row_style_name):
row = deepcopy(style_name_row_dictionary[row_style_name])
@@ -681,18 +637,15 @@
row = self._updateColumnValue(row, listbox_column_list)
newtable.append(row)
- self._setUniqueElementName(base_name=table_id,
- iteration_index=iteration_index,
- xpath=table_xpath,
- element_tree=newtable)
+ self._setUniqueElementName(table_id, iteration_index, table_xpath, newtable)
parent_paragraph.insert(target_index, newtable)
- return element_tree
-
- def _copyRowStyle(self, table_row_list=[], has_header_rows=False):
+ def _copyRowStyle(self, table_row_list=None, has_header_rows=False):
"""
Copy ODF table row styles.
"""
+ if table_row_list is None:
+ table_row_list = []
def removeOfficeAttribute(row):
if row is None or has_header_rows: return
odf_cell_list = row.findall("{%s}table-cell" % row.nsmap['table'])
@@ -901,8 +854,8 @@
_style_attribute_name = '{urn:oasis:names:tc:opendocument:xmlns:text:1.0}style-name'
- def _replaceXmlByForm(self, element_tree=None, form=None, here=None,
- extra_context=None, ooo_builder=None, iteration_index=0):
+ def _replaceXmlByForm(self, element_tree, form, here, extra_context,
+ ooo_builder, iteration_index=0):
"""
Replace an element_tree object using an ERP5 form.
@@ -918,50 +871,37 @@
REQUEST = here.REQUEST
for (count, field) in enumerate(field_list):
if isinstance(field, ListBox):
- element_tree = self._appendTableByListbox(element_tree=element_tree,
- listbox=field,
- REQUEST=REQUEST,
- iteration_index=iteration_index)
+ self._appendTableByListbox(element_tree, field, REQUEST,
+ iteration_index=iteration_index)
elif isinstance(field, FormBox):
if not hasattr(here, field.get_value('formbox_target_id')):
continue
sub_form = getattr(here, field.get_value('formbox_target_id'))
- content = self._replaceXmlByFormbox(element_tree=element_tree,
- field=field,
- form=sub_form,
- extra_context=extra_context,
- ooo_builder=ooo_builder,
+ content = self._replaceXmlByFormbox(element_tree, field, sub_form,
+ extra_context, ooo_builder,
iteration_index=iteration_index)
elif isinstance(field, ReportBox):
report_method = getattr(field, field.get_value('report_method'), None)
- element_tree = self._replaceXmlByReportSection(element_tree=element_tree,
- extra_context=extra_context,
- report_method=report_method,
- base_name=field.id,
- ooo_builder=ooo_builder)
+ self._replaceXmlByReportSection(element_tree, extra_context,
+ report_method, field.id, ooo_builder)
elif isinstance(field, ImageField):
- element_tree = self._replaceXmlByImageField(element_tree=element_tree,
- image_field=field,
- ooo_builder=ooo_builder,
- iteration_index=iteration_index)
+ self._replaceXmlByImageField(element_tree, field,
+ ooo_builder, iteration_index=iteration_index)
else:
- element_tree = self._replaceNodeViaReference(element_tree=element_tree,
- field=field, iteration_index=iteration_index)
- return element_tree
-
- def _replaceNodeViaReference(self, element_tree=None, field=None, iteration_index=0):
+ self._replaceNodeViaReference(element_tree, field)
+
+ def _replaceNodeViaReference(self, element_tree, field):
"""replace nodes (e.g. paragraphs) via ODF reference"""
self._replaceNodeViaRangeReference(element_tree=element_tree, field=field)
self._replaceNodeViaPointReference(element_tree=element_tree, field=field)
self._replaceNodeViaFormName(element_tree, field)
- return element_tree
def _renderField(self, field):
# XXX It looks ugly to use render_pdf to extract text. Probably
# it should be renamed to render_text.
return field.render_pdf(field.get_value('default'))
- def _replaceNodeViaPointReference(self, element_tree=None, field=None, iteration_index=0):
+ def _replaceNodeViaPointReference(self, element_tree, field, iteration_index=0):
"""Replace text node via an ODF point reference.
point reference example:
@@ -1034,8 +974,7 @@
class ODGStrategy(ODFStrategy):
"""ODGStrategy create a ODG Document from a form and a ODG template"""
- def _replaceXmlByForm(self, element_tree=None, form=None, here=None,
- extra_context=None, ooo_builder=None, iteration_index=0):
+ def _replaceXmlByForm(self, element_tree, form, here, extra_context, ooo_builder, iteration_index=0):
field_list = form.get_fields(include_disabled=1)
REQUEST = here.REQUEST
@@ -1049,4 +988,3 @@
for node in node_list:
parent_node = node.getparent().replace(node, new_node)
- return element_tree
More information about the Erp5-report
mailing list