From a42c9d20a29cc87e2ef1638f8443e062ae924b26 Mon Sep 17 00:00:00 2001 From: Tatuya Kamada <tatuya@nexedi.com> Date: Thu, 30 Apr 2009 13:04:36 +0000 Subject: [PATCH] Append a feature to enable setting a style name in a Table, according as a listbox row CSS class name TODO: write a test git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@26744 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5OOo/FormPrintout.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/product/ERP5OOo/FormPrintout.py b/product/ERP5OOo/FormPrintout.py index e67ef82889..feee7896f2 100644 --- a/product/ERP5OOo/FormPrintout.py +++ b/product/ERP5OOo/FormPrintout.py @@ -686,7 +686,8 @@ class ODFStrategy(Implicit): has_header_rows = len(table_header_rows_list) > 0 (row_top, row_middle, row_bottom) = self._copyRowStyle(table_row_list, has_header_rows=has_header_rows) - + # create style-name and table-row dictionary if a reference name is set + style_name_row_dictionary = self._createStyleNameRowDictionary(table_row_list) # clear original table parent_paragraph = target_table.getparent() target_index = parent_paragraph.index(target_table) @@ -706,13 +707,17 @@ class ODFStrategy(Implicit): last_index = len(listboxline_list) - 1 for (index, listboxline) in enumerate(listboxline_list): listbox_column_list = listboxline.getColumnItemList() + row_style_name = listboxline.getRowCSSClassName() if listboxline.isTitleLine() and not has_header_rows: row = deepcopy(row_top) row = self._updateColumnValue(row, listbox_column_list) newtable.append(row) is_top = False elif listboxline.isDataLine() and is_top: - row = deepcopy(row_top) + if style_name_row_dictionary.has_key(row_style_name): + row = deepcopy(style_name_row_dictionary[row_style_name]) + else: + row = deepcopy(row_top) row = self._updateColumnValue(row, listbox_column_list) newtable.append(row) is_top = False @@ -721,7 +726,10 @@ class ODFStrategy(Implicit): row = self._updateColumnStatValue(row, listbox_column_list, row_middle) newtable.append(row) elif index > 0 and listboxline.isDataLine(): - row = deepcopy(row_middle) + if style_name_row_dictionary.has_key(row_style_name): + row = deepcopy(style_name_row_dictionary[row_style_name]) + else: + row = deepcopy(row_middle) row = self._updateColumnValue(row, listbox_column_list) newtable.append(row) @@ -765,6 +773,17 @@ class ODFStrategy(Implicit): removeOfficeAttribute(row_top) return (row_top, row_middle, row_bottom) + + def _createStyleNameRowDictionary(self, table_row_list=[]): + """create stylename and table row dictionary if a style name reference is set""" + style_name_row_dictionary = {} + for table_row in table_row_list: + reference_element = table_row.find('.//*[@{%s}name]' % table_row.nsmap['text']) + if reference_element is not None: + name = reference_element.attrib['{%s}name' % table_row.nsmap['text']] + style_name_row_dictionary[name] = deepcopy(table_row) + return style_name_row_dictionary + def _updateColumnValue(self, row=None, listbox_column_list=[]): odf_cell_list = row.findall("{%s}table-cell" % row.nsmap['table']) odf_cell_list_size = len(odf_cell_list) -- 2.30.9