diff --git a/addons/base_import/models.py b/addons/base_import/models.py index 0f1d8c5705e..51fac2af91c 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -124,10 +124,10 @@ class ir_import(orm.TransientModel): """ csv_iterator = csv.reader( StringIO(record.file), - quotechar=options['quote'], + quotechar=options['quoting'], delimiter=options['separator']) csv_nonempty = itertools.ifilter(None, csv_iterator) - # TODO: guess encoding? + # TODO: guess encoding with chardet? Or https://github.com/aadsm/jschardet encoding = options.get('encoding', 'utf-8') return itertools.imap( lambda row: [item.decode(encoding) for item in row], @@ -206,7 +206,7 @@ class ir_import(orm.TransientModel): :param id: identifier of the import :param int count: number of preview lines to generate :param options: format-specific options. - CSV: {encoding, quote, separator, headers} + CSV: {encoding, quoting, separator, headers} :type options: {str, str, str, bool} :returns: {fields, matches, headers, preview} | {error, preview} :rtype: {dict(str: dict(...)), dict(int, list(str)), list(str), list(list(str))} | {str, str} diff --git a/addons/base_import/static/src/css/import.css b/addons/base_import/static/src/css/import.css index 63b53a9e5c1..207f2aed9c6 100644 --- a/addons/base_import/static/src/css/import.css +++ b/addons/base_import/static/src/css/import.css @@ -33,3 +33,13 @@ .oe_import a.oe_import_toggle:before { content: '> ' } + +.oe_import .oe_import_options p { + margin: 0; + padding: 0; +} +.oe_import .oe_import_options label { + display: inline-block; + width: 10em; + text-align: right; +} diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 99397304d16..2853f36019a 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -38,10 +38,11 @@ openerp.base_import = function (instance) { instance.web.DataImport = instance.web.Dialog.extend({ template: 'ImportView', dialog_title: _lt("Import Data"), - defaults: { - quoting: '"', - separator: ',', - }, + opts: [ + {name: 'encoding', label: _lt("Encoding:"), value: 'utf-8'}, + {name: 'separator', label: _lt("Separator:"), value: ','}, + {name: 'quoting', label: _lt("Quoting:"), value: '"'} + ], events: { 'change input.oe_import_file': 'file_update', 'change input:not(.oe_import_file)': 'settings_updated', @@ -85,11 +86,15 @@ openerp.base_import = function (instance) { }, import_options: function () { - return { - quote: this.$('input.oe_import_quoting').val(), - separator: this.$('input.oe_import_separator').val(), - headers: this.$('input.oe_import_has_header').prop('checked'), + var self = this; + var options = { + headers: this.$('input.oe_import_has_header').prop('checked') }; + _(this.opts).each(function (opt) { + options[opt.name] = + self.$('input.oe_import_' + opt.name).val(); + }); + return options; }, //- File & settings change section diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml index a85f8e960c1..a2844f8d7b9 100644 --- a/addons/base_import/static/src/xml/import.xml +++ b/addons/base_import/static/src/xml/import.xml @@ -29,15 +29,15 @@