summaryrefslogtreecommitdiff
path: root/openerp/tests
diff options
context:
space:
mode:
authorXavier Morel <xmo@odoo.com>2015-08-26 16:04:14 +0200
committerXavier Morel <xmo@odoo.com>2015-08-26 16:50:09 +0200
commitf5a1693f064c4a85b7cbc71dc27d72bfcb5e66bf (patch)
tree631cb18936b1ca1c0d425fdf5ad4a43f49ac39af /openerp/tests
parentaa6ee3fddfbac63969d216ac2290766a63364006 (diff)
[ADD] base_import: support for XLS and ODS files
* added intermediate ``_read_file`` step dispatching between CSV, ODS and XLS(X) parsing - primary dispatch on mime type, secondary on file extension: + OS may not provide a relevant mime type if no software locally installed for the filetype (e.g. Windows sends excel files as application/octet-stream if excel is not installed, and ODS files as zip if OpenOffice/LibreOffice isn't installed) + applications may re-register extensions to non-standard mimetypes breaking the dispatcher So if the mimetype is found trust it, otherwise try with the filename's extension (if any) - all readers skip lines with only empty cells in their output - ODS and XLS content are "CSVified", rows are converted to arrays of unicode strings * UI altered to not assume CSV files everywhere, and avoid returning garbage preview data for non-CSV imports Various: * added a ``can_import`` utility function to tests.common, can be used to skip tests if an optional Python dependency is not installed (but one would like tests to run if the dependency is available) * fixed datetime issue in ir_fields * added converter for monetary fields (iso float) * spreadsheet don't have integers, twiddling required to ensure integral values won't be serialized as floats (breaking conversion back to Python) * improved some tests by asserting no error is generated (bonus: logs the error message if there is one, rather than just saying the result is blown) * because some systems only provide elderly versions of XLRD (e.g. current debian stable provides 0.9.2 from April 2013) - keep using xldate_as_tuple instead of 0.9.3's xldate_as_datetime, workaround is simple - check for xlrd.xlsx in case of pre-0.8 XLRD Authorship: Ronak Baxi <rba@odoo.com> Mohammed Shekha <msh@openerp.com> Task 10792 Closes #7285
Diffstat (limited to 'openerp/tests')
-rw-r--r--openerp/tests/common.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/openerp/tests/common.py b/openerp/tests/common.py
index 932c88ae41a..2885f6c0ea0 100644
--- a/openerp/tests/common.py
+++ b/openerp/tests/common.py
@@ -6,6 +6,7 @@ helpers and classes to write tests.
"""
import errno
import glob
+import importlib
import json
import logging
import os
@@ -392,3 +393,18 @@ class HttpCase(TransactionCase):
phantomtest = os.path.join(os.path.dirname(__file__), 'phantomtest.js')
cmd = ['phantomjs', phantomtest, json.dumps(options)]
self.phantom_run(cmd, timeout)
+
+def can_import(module):
+ """ Checks if <module> can be imported, returns ``True`` if it can be,
+ ``False`` otherwise.
+
+ To use with ``unittest.skipUnless`` for tests conditional on *optional*
+ dependencies, which may or may be present but must still be tested if
+ possible.
+ """
+ try:
+ importlib.import_module(module)
+ except ImportError:
+ return False
+ else:
+ return True