summaryrefslogtreecommitdiff
path: root/addons/base_import/static/src
diff options
context:
space:
mode:
authorMohammed Shekha <msh-odoo@users.noreply.github.com>2018-08-16 14:40:35 +0530
committerxmo-odoo <xmo@odoo.com>2018-08-16 11:10:35 +0200
commit8fbadb9575c25e20f08637c837b386fde213203c (patch)
tree568cdc943c24a2bcee46812580de4b636d3a1899 /addons/base_import/static/src
parentb3824aa6cbecc97fc0cd54773417045e69adc87a (diff)
[ADD] base_import: debug option to create M2O/M2M records
Adds a checkbox to import columns (in debug mode) allowing a user to create records M2O and M2M records not found (via name_search). Task ID: 1850633 * uses a context key to avoid altering basically all the import callstack * attempted to lift the creation in the `_str_to_*` functions and create m2m via commands, but that doesn't really work out
Diffstat (limited to 'addons/base_import/static/src')
-rw-r--r--addons/base_import/static/src/js/import_action.js37
-rw-r--r--addons/base_import/static/src/scss/base_import.scss1
-rw-r--r--addons/base_import/static/src/xml/base_import.xml9
3 files changed, 44 insertions, 3 deletions
diff --git a/addons/base_import/static/src/js/import_action.js b/addons/base_import/static/src/js/import_action.js
index e2eff44c174..8349603fc9f 100644
--- a/addons/base_import/static/src/js/import_action.js
+++ b/addons/base_import/static/src/js/import_action.js
@@ -280,7 +280,8 @@ var DataImport = AbstractAction.extend(ControlPanelMixin, {
var options = {
headers: this.$('input.oe_import_has_header').prop('checked'),
advanced: this.$('input.oe_import_advanced_mode').prop('checked'),
- keep_matches: this.do_not_change_match
+ keep_matches: this.do_not_change_match,
+ name_create_enabled_fields: {},
};
_(this.opts).each(function (opt) {
options[opt.name] =
@@ -301,6 +302,12 @@ var DataImport = AbstractAction.extend(ControlPanelMixin, {
}).get();
}
this.do_not_change_match = false;
+ this.$('input.o_import_create_option').each(function () {
+ var field = this.getAttribute('field');
+ if (field) {
+ options.name_create_enabled_fields[field] = this.checked;
+ }
+ });
return options;
},
@@ -402,6 +409,24 @@ var DataImport = AbstractAction.extend(ControlPanelMixin, {
};
$fields.each(function (k,v) {
var filtered_data = self.generate_fields_completion(result, k);
+
+ var $thing = $();
+ var bind = function (d) {};
+ if (session.debug) {
+ $thing = $(QWeb.render('ImportView.create_record_option')).insertAfter(v).hide();
+ bind = function (data) {
+ switch (data.type) {
+ case 'many2one': case 'many2many':
+ $thing.find('input').attr('field', data.id);
+ $thing.show();
+ break;
+ default:
+ $thing.find('input').attr('field', '').prop('checked', false);
+ $thing.hide();
+ }
+ }
+ }
+
$(v).select2({
allowClear: true,
minimumInputLength: 0,
@@ -413,11 +438,15 @@ var DataImport = AbstractAction.extend(ControlPanelMixin, {
return;
}
- callback(item_finder(default_value));
+ var data = item_finder(default_value);
+ bind(data);
+ callback(data);
},
placeholder: _t('Don\'t import'),
width: 'resolve',
dropdownCssClass: 'oe_import_selector'
+ }).on('change', function (e) {
+ bind(item_finder(e.currentTarget.value));
});
});
},
@@ -448,7 +477,8 @@ var DataImport = AbstractAction.extend(ControlPanelMixin, {
collection.push({
id: id,
text: label,
- required: field.required
+ required: field.required,
+ type: field.type
});
}
@@ -521,6 +551,7 @@ var DataImport = AbstractAction.extend(ControlPanelMixin, {
var columns = this.$('.oe_import_grid-header .oe_import_grid-cell .o_import_header_name').map(function () {
return $(this).text().trim().toLowerCase() || false;
}).get();
+
var tracking_disable = 'tracking_disable' in kwargs ? kwargs.tracking_disable : !this.$('#oe_import_tracking').prop('checked')
var defer_parent_store = 'defer_parent_store' in kwargs ? kwargs.defer_parent_store : !!this.$('#oe_import_deferparentstore').prop('checked')
delete kwargs.tracking_disable;
diff --git a/addons/base_import/static/src/scss/base_import.scss b/addons/base_import/static/src/scss/base_import.scss
index f3686e7b448..d32cffdfb32 100644
--- a/addons/base_import/static/src/scss/base_import.scss
+++ b/addons/base_import/static/src/scss/base_import.scss
@@ -106,6 +106,7 @@
}
td {
padding: 4px;
+ vertical-align: top;
}
}
}
diff --git a/addons/base_import/static/src/xml/base_import.xml b/addons/base_import/static/src/xml/base_import.xml
index fb29ac0c9ea..3b8d8136da9 100644
--- a/addons/base_import/static/src/xml/base_import.xml
+++ b/addons/base_import/static/src/xml/base_import.xml
@@ -100,6 +100,15 @@
<button type="button" class="btn btn-secondary o_import_cancel">Cancel</button>
</t>
+ <t t-name="ImportView.create_record_option">
+ <div class="mt4">
+ <label title="Creates new records if they can't be found (instead of failing to import). Note that the value in the column will be used as the new record's 'name', and assumes this is sufficient to create the record.">
+ <input type="checkbox"/>
+ Create if doesn't exist
+ </label>
+ </div>
+ </t>
+
<t t-name="ImportView.preview">
<thead>
<tr t-if="headers" class="oe_import_grid-header">