From 4ba48a45397f5a74014a87b71ac74b54ecff224c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Fri, 14 Nov 2008 14:40:34 +0000
Subject: [PATCH] support import of cell with styles, by using simpler xpath.
 Thx nicolas for his xpath skills

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@24598 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5OOo/OOoUtils.py                      |  10 +++-------
 product/ERP5OOo/tests/testOOoImport.py           |  14 ++++++++++++++
 .../import_data_list_with_style.ods              | Bin 0 -> 9601 bytes
 3 files changed, 17 insertions(+), 7 deletions(-)
 create mode 100644 product/ERP5OOo/tests/test_document/import_data_list_with_style.ods

diff --git a/product/ERP5OOo/OOoUtils.py b/product/ERP5OOo/OOoUtils.py
index 0a4556b527..df23a5e79f 100644
--- a/product/ERP5OOo/OOoUtils.py
+++ b/product/ERP5OOo/OOoUtils.py
@@ -446,13 +446,9 @@ class OOoParser(Implicit):
             # Get the cell content
             cell_text = None
             text_tags = cell.xpath('.//*[name() = "text:p"]')
-            for text in text_tags:
-              for k in range(len(text.childNodes)):
-                child = text.childNodes[k]
-                if child.nodeType == Node.TEXT_NODE:
-                  if cell_text == None:
-                    cell_text = ''
-                  cell_text += child.nodeValue
+            if len(text_tags):
+              cell_text = ''.join([text.xpath('string(.)')
+                                   for text in text_tags])
 
             # Add the cell to the line
             table_line.append(cell_text)
diff --git a/product/ERP5OOo/tests/testOOoImport.py b/product/ERP5OOo/tests/testOOoImport.py
index 97c349b77d..23dea55397 100644
--- a/product/ERP5OOo/tests/testOOoImport.py
+++ b/product/ERP5OOo/tests/testOOoImport.py
@@ -325,6 +325,20 @@ class TestOOoImport(ERP5TypeTestCase):
     mapping = parser.getSpreadsheetsMapping()
     self.assertEquals(['Person'], mapping.keys())
 
+  def test_getSpreadSheetMappingStyle(self):
+    parser = OOoParser()
+    parser.openFile(open(makeFilePath('import_data_list_with_style.ods'), 'rb'))
+    mapping = parser.getSpreadsheetsMapping()
+    self.assertEquals(['Feuille1'], mapping.keys())
+    self.assertEquals(mapping['Feuille1'][1],
+                      ['a line with style'])
+    self.assertEquals(mapping['Feuille1'][2],
+                      ['a line with multiple styles'])
+    self.assertEquals(mapping['Feuille1'][3],
+                      ['http://www.erp5.org'])
+    self.assertEquals(mapping['Feuille1'][4],
+                      ['john.doe@example.com'])
+
 
 def test_suite():
   suite = unittest.TestSuite()
diff --git a/product/ERP5OOo/tests/test_document/import_data_list_with_style.ods b/product/ERP5OOo/tests/test_document/import_data_list_with_style.ods
new file mode 100644
index 0000000000000000000000000000000000000000..fa1bac9d2f05da272b58563715a369c801a92566
GIT binary patch
literal 9601
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
SqSZ)IzfEim3?D}H)&Bu`So>N4

literal 0
HcmV?d00001

-- 
2.30.9