Xavier Morel
f5a1693f06
[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
2015-08-26 16:50:09 +02:00
..
2015-08-26 15:08:48 +02:00
2015-08-25 12:01:38 +02:00
2015-08-23 01:51:13 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 13:52:00 +02:00
2015-08-25 19:27:21 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:22 +02:00
2015-08-25 19:27:22 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 17:14:05 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 16:50:09 +02:00
2015-08-25 19:27:24 +02:00
2015-08-26 16:50:09 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 15:19:44 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:21 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:22 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 17:42:24 +02:00
2015-08-09 02:00:12 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 17:42:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 17:42:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 17:42:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 17:30:36 +02:00
2015-08-25 17:42:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-20 16:15:59 +02:00
2015-08-20 16:15:59 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-23 01:51:13 +02:00
2015-08-20 16:15:59 +02:00
2015-08-24 10:46:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-21 10:41:02 +02:00
2015-08-21 10:41:02 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 14:16:50 +02:00
2015-08-25 12:01:38 +02:00
2015-08-21 10:41:02 +02:00
2015-08-25 19:27:23 +02:00
2015-08-23 01:51:13 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 13:59:26 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 16:41:56 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:23 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:21 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:23 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:23 +02:00
2015-08-25 19:27:23 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:22 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 12:40:29 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 16:41:56 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 16:01:19 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 15:54:17 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 14:53:00 +02:00
2015-08-26 16:41:56 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 14:53:00 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 16:01:19 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 16:01:19 +02:00
2015-08-25 19:27:21 +02:00
2015-08-25 19:27:22 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-26 16:01:19 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-26 16:01:19 +02:00
2015-08-26 16:01:19 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 19:27:24 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 13:52:00 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 13:52:00 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00
2015-08-25 12:01:38 +02:00