diff options
| author | Haresh Shyara <hsh@odoo.com> | 2016-10-07 16:38:30 +0530 |
|---|---|---|
| committer | Yannick Tivisse <yti@odoo.com> | 2016-11-10 09:44:20 +0100 |
| commit | 1ba4fbe640cf22abe484174a6ad231e69d9f12e7 (patch) | |
| tree | d124d94af214ce2f6820894f54896b2fa222847e | |
| parent | a07012fbc280c2ed7573199da60d9053c167d6be (diff) | |
[IMP] base_import: Improve import preview for related fields
normal mode: Importing only regular/basic fields from source file
advanced mode: Importing any related fields from source file(i.e. if detected pattern in header like '<relational_fieldname>/<fname>')
- Rename following checkbox "Show all fields for completion (advanced)" in "Show fields of relation fields (advanced)"
- If the import file contains a column with a field of a relation field, show the column label in the preview, even if "Show fields of relation fields (advanced)" is not checked > to make it less confusing when importing advanced files (e.g. products with attributes)
| -rw-r--r-- | addons/base_import/models/base_import.py | 1 | ||||
| -rw-r--r-- | addons/base_import/static/src/js/base_import.js | 1 | ||||
| -rw-r--r-- | addons/base_import/static/src/xml/base_import.xml | 4 | ||||
| -rw-r--r-- | addons/base_import/tests/test_base_import.py | 8 |
4 files changed, 8 insertions, 6 deletions
diff --git a/addons/base_import/models/base_import.py b/addons/base_import/models/base_import.py index 2a497106735..ad69cb01402 100644 --- a/addons/base_import/models/base_import.py +++ b/addons/base_import/models/base_import.py @@ -500,6 +500,7 @@ class Import(models.TransientModel): 'headers_type': header_types or False, 'preview': preview, 'options': options, + 'advanced_mode': any([len(models.fix_import_export_id_paths(col)) > 1 for col in headers]), 'debug': self.user_has_groups('base.group_no_one'), } except Exception, error: diff --git a/addons/base_import/static/src/js/base_import.js b/addons/base_import/static/src/js/base_import.js index b3b905b36a5..a0d8b135228 100644 --- a/addons/base_import/static/src/js/base_import.js +++ b/addons/base_import/static/src/js/base_import.js @@ -366,6 +366,7 @@ var DataImport = Widget.extend(ControlPanelMixin, { this.$buttons.filter('.o_import_button').add(this.$('.oe_import_file_reload')) .prop('disabled', false); this.$el.addClass('oe_import_preview'); + this.$('input.oe_import_advanced_mode').prop('checked', result.advanced_mode); this.$('.oe_import_grid').html(QWeb.render('ImportView.preview', result)); if (result.headers.length === 1) { diff --git a/addons/base_import/static/src/xml/base_import.xml b/addons/base_import/static/src/xml/base_import.xml index 0d23096f691..8a416c3ca42 100644 --- a/addons/base_import/static/src/xml/base_import.xml +++ b/addons/base_import/static/src/xml/base_import.xml @@ -67,9 +67,9 @@ id="oe_import_has_header" checked="checked"/> <label for="oe_import_has_header">The first row contains the label of the column</label> - <input type="checkbox" class="oe_import_advanced_mode" + <input type="checkbox" class="oe_import_advanced_mode" disabled="disabled" id="oe_import_advanced_mode"/> - <label for="oe_import_advanced_mode">Show all fields for completion (advanced)</label> + <label for="oe_import_advanced_mode">Show fields of relation fields (advanced)</label> <p class="oe_import_noheaders">If the file contains the column names, Odoo can try auto-detecting the field corresponding to the column. This makes imports diff --git a/addons/base_import/tests/test_base_import.py b/addons/base_import/tests/test_base_import.py index 68a562971c4..6bef004936e 100644 --- a/addons/base_import/tests/test_base_import.py +++ b/addons/base_import/tests/test_base_import.py @@ -260,7 +260,7 @@ class TestPreview(TransactionCase): ['qux', '5', '6'], ]) # Ensure we only have the response fields we expect - self.assertItemsEqual(result.keys(), ['matches', 'headers', 'fields', 'preview', 'headers_type', 'options', 'debug']) + self.assertItemsEqual(result.keys(), ['matches', 'headers', 'fields', 'preview', 'headers_type', 'options', 'advanced_mode', 'debug']) @unittest.skipUnless(can_import('xlrd'), "XLRD module not available") def test_xls_success(self): @@ -290,7 +290,7 @@ class TestPreview(TransactionCase): ['qux', '5', '6'], ]) # Ensure we only have the response fields we expect - self.assertItemsEqual(result.keys(), ['matches', 'headers', 'fields', 'preview', 'headers_type', 'options', 'debug']) + self.assertItemsEqual(result.keys(), ['matches', 'headers', 'fields', 'preview', 'headers_type', 'options', 'advanced_mode', 'debug']) @unittest.skipUnless(can_import('xlrd.xlsx'), "XLRD/XLSX not available") def test_xlsx_success(self): @@ -320,7 +320,7 @@ class TestPreview(TransactionCase): ['qux', '5', '6'], ]) # Ensure we only have the response fields we expect - self.assertItemsEqual(result.keys(), ['matches', 'headers', 'fields', 'preview', 'headers_type', 'options', 'debug']) + self.assertItemsEqual(result.keys(), ['matches', 'headers', 'fields', 'preview', 'headers_type', 'options','advanced_mode', 'debug']) @unittest.skipUnless(can_import('odf'), "ODFPY not available") def test_ods_success(self): @@ -350,7 +350,7 @@ class TestPreview(TransactionCase): ['aux', '5', '6'], ]) # Ensure we only have the response fields we expect - self.assertItemsEqual(result.keys(), ['matches', 'headers', 'fields', 'preview', 'headers_type', 'options', 'debug']) + self.assertItemsEqual(result.keys(), ['matches', 'headers', 'fields', 'preview', 'headers_type', 'options', 'advanced_mode', 'debug']) class test_convert_import_data(TransactionCase): |
