summaryrefslogtreecommitdiff
path: root/addons/base_import/odf_ods_reader.py
diff options
context:
space:
mode:
authorHitesh Trivedi <htr@openerp.com>2015-09-24 18:58:58 +0530
committerJérome Maes <jem@openerp.com>2016-07-07 14:44:10 +0200
commitcf3e8324f1f4119347ec685abc5cced3a1cf02a9 (patch)
tree6158813f26f9e633895e59f81fff505f70381416 /addons/base_import/odf_ods_reader.py
parent45b3e6b96c4df1ee8f8532ef2306908e5c27360d (diff)
[MOV] base_import: module directory organization
Note: move test models file in models to not import tests directory, which breaks the mute_logger of test cases
Diffstat (limited to 'addons/base_import/odf_ods_reader.py')
-rw-r--r--addons/base_import/odf_ods_reader.py98
1 files changed, 0 insertions, 98 deletions
diff --git a/addons/base_import/odf_ods_reader.py b/addons/base_import/odf_ods_reader.py
deleted file mode 100644
index 0f0142f3f04..00000000000
--- a/addons/base_import/odf_ods_reader.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright 2011 Marco Conti
-
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# sourced from https://github.com/marcoconti83/read-ods-with-odfpy
-# further altered locally
-
-from odf import opendocument
-from odf.table import Table, TableRow, TableCell
-from odf.text import P
-
-
-class ODSReader(object):
-
- # loads the file
- def __init__(self, file=None, content=None, clonespannedcolumns=None):
- if not content:
- self.clonespannedcolumns = clonespannedcolumns
- self.doc = opendocument.load(file)
- else:
- self.clonespannedcolumns = clonespannedcolumns
- self.doc = content
- self.SHEETS = {}
- for sheet in self.doc.spreadsheet.getElementsByType(Table):
- self.readSheet(sheet)
-
- # reads a sheet in the sheet dictionary, storing each sheet as an
- # array (rows) of arrays (columns)
- def readSheet(self, sheet):
- name = sheet.getAttribute("name")
- rows = sheet.getElementsByType(TableRow)
- arrRows = []
-
- # for each row
- for row in rows:
- arrCells = []
- cells = row.getElementsByType(TableCell)
-
- # for each cell
- for count, cell in enumerate(cells, start=1):
- # repeated value?
- repeat = 0
- if count != len(cells):
- repeat = cell.getAttribute("numbercolumnsrepeated")
- if not repeat:
- repeat = 1
- spanned = int(cell.getAttribute('numbercolumnsspanned') or 0)
- # clone spanned cells
- if self.clonespannedcolumns is not None and spanned > 1:
- repeat = spanned
-
- ps = cell.getElementsByType(P)
- textContent = u""
-
- # for each text/text:span node
- for p in ps:
- for n in p.childNodes:
- if n.nodeType == 1 and n.tagName == "text:span":
- for c in n.childNodes:
- if c.nodeType == 3:
- textContent = u'{}{}'.format(textContent, n.data)
-
- if n.nodeType == 3:
- textContent = u'{}{}'.format(textContent, n.data)
-
- if textContent:
- if not textContent.startswith("#"): # ignore comments cells
- for rr in range(int(repeat)): # repeated?
- arrCells.append(textContent)
- else:
- for rr in range(int(repeat)):
- arrCells.append("")
-
- # if row contained something
- if arrCells:
- arrRows.append(arrCells)
-
- #else:
- # print ("Empty or commented row (", row_comment, ")")
-
- self.SHEETS[name] = arrRows
-
- # returns a sheet as an array (rows) of arrays (columns)
- def getSheet(self, name):
- return self.SHEETS[name]
-
- def getFirstSheet(self):
- return next(iter(self.SHEETS.itervalues()))