-
- Downloads
[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
Showing
- addons/base_import/models.py 110 additions, 16 deletionsaddons/base_import/models.py
- addons/base_import/odf_ods_reader.py 98 additions, 0 deletionsaddons/base_import/odf_ods_reader.py
- addons/base_import/static/src/js/import.js 2 additions, 1 deletionaddons/base_import/static/src/js/import.js
- addons/base_import/static/src/xml/import.xml 8 additions, 11 deletionsaddons/base_import/static/src/xml/import.xml
- addons/base_import/tests/test.ods 0 additions, 0 deletionsaddons/base_import/tests/test.ods
- addons/base_import/tests/test.xls 0 additions, 0 deletionsaddons/base_import/tests/test.xls
- addons/base_import/tests/test.xlsx 0 additions, 0 deletionsaddons/base_import/tests/test.xlsx
- addons/base_import/tests/test_cases.py 121 additions, 12 deletionsaddons/base_import/tests/test_cases.py
- addons/base_setup/res_config.py 1 addition, 1 deletionaddons/base_setup/res_config.py
- openerp/addons/base/ir/ir_fields.py 4 additions, 3 deletionsopenerp/addons/base/ir/ir_fields.py
- openerp/tests/common.py 16 additions, 0 deletionsopenerp/tests/common.py
Loading
Please register or sign in to comment