summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-11-07 15:28:28 +0100
committerChristophe Simonis <chs@odoo.com>2017-11-07 15:28:28 +0100
commit449ec5e29dab7b4a306c824666160fdf6b79088a (patch)
treed6fc7ee2f5e0a41bfe65b6d6ebd090aa7e76051d
parent8670f62e3c1d57371e34836b84a0f5079b2ad0e6 (diff)
parent255478acbd66f01daf32422636f09f2014ebc9f8 (diff)
[MERGE] forward port branch saas-16 up to 255478acbd6
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js30
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js32
-rw-r--r--addons/website_crm_partner_assign/models/crm_lead.py2
3 files changed, 57 insertions, 7 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index ae3080b3b8e..2d2a5d5ea4d 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -46,7 +46,7 @@ var M2ODialog = Dialog.extend({
click: function () {
if (this.$("input").val() !== ''){
this.trigger_up('quick_create', { value: this.$('input').val() });
- this.close();
+ this.close(true);
} else {
this.$("input").focus();
}
@@ -71,12 +71,30 @@ var M2ODialog = Dialog.extend({
this.$("p").text(_.str.sprintf(_t("You are creating a new %s, are you sure it does not exist yet?"), this.name));
this.$("input").val(this.value);
},
+ /**
+ * @override
+ * @param {boolean} isSet
+ */
+ close: function (isSet) {
+ this.isSet = isSet;
+ this._super.apply(this, arguments);
+ },
+ /**
+ * @override
+ */
+ destroy: function () {
+ if (!this.isSet) {
+ this.trigger_up('closed_unset');
+ }
+ this._super.apply(this, arguments);
+ },
});
var FieldMany2One = AbstractField.extend({
supportedFieldTypes: ['many2one'],
template: 'FieldMany2One',
custom_events: _.extend({}, AbstractField.prototype.custom_events, {
+ 'closed_unset': '_onDialogClosedUnset',
'quick_create': '_onQuickCreate',
'search_create_popup': '_onSearchCreatePopup',
}),
@@ -451,6 +469,16 @@ var FieldMany2One = AbstractField.extend({
});
}
},
+
+ /**
+ * Reset the input as dialog has been closed without m2o creation.
+ *
+ * @private
+ */
+ _onDialogClosedUnset: function () {
+ this.floating = false;
+ this._render();
+ },
/**
* @private
*/
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js
index fe98eaaeab2..f665fa160e4 100644
--- a/addons/web/static/tests/fields/relational_fields_tests.js
+++ b/addons/web/static/tests/fields/relational_fields_tests.js
@@ -1397,7 +1397,7 @@ QUnit.module('relational_fields', {
});
QUnit.test('slow create on a many2one', function (assert) {
- assert.expect(1);
+ assert.expect(7);
var form = createView({
View: FormView,
@@ -1417,12 +1417,34 @@ QUnit.module('relational_fields', {
},
});
- form.$('.o_field_many2one input').focus();
- form.$('.o_field_many2one input').val('new partner').trigger('keyup').trigger('focusout');
+ // cancel the many2one creation with Cancel button
+ form.$('.o_field_many2one input').focus().val('new product').trigger('keyup').trigger('blur');
+ assert.strictEqual($('.modal').length, 1, "there should be one opened modal");
+ $('.modal .modal-footer .btn:contains(Cancel)').click();
+ assert.strictEqual(form.$('.o_field_many2one input').val(), "",
+ 'the many2one should not set a value as its creation has been cancelled (with Cancel button)');
- $('.modal .modal-footer .btn-primary').first().click();
+ // cancel the many2one creation with Close button
+ form.$('.o_field_many2one input').focus().val('new product').trigger('keyup').trigger('blur');
+ $('.modal .modal-header button').click();
+ assert.strictEqual(form.$('.o_field_many2one input').val(), "",
+ 'the many2one should not set a value as its creation has been cancelled (with Close button)');
- assert.strictEqual($('.modal:visible:last .o_form_view').length, 1,
+ // select a new value then cancel the creation of the new one --> restore the previous
+ form.$('.o_field_many2one input').click();
+ form.$('.o_field_many2one input').autocomplete('widget').find('a').first().click();
+ assert.strictEqual(form.$('input').val(), "xphone", "should have selected xphone");
+ form.$('.o_field_many2one input').focus().val('new product').trigger('keyup').trigger('blur');
+ assert.strictEqual($('.modal').length, 1, "there should be one opened modal");
+ $('.modal .modal-footer .btn:contains(Cancel)').click();
+ assert.strictEqual(form.$('.o_field_many2one input').val(), "xphone",
+ 'should have restored the many2one with its previous selected value (xphone)');
+
+ // confirm the many2one creation
+ form.$('.o_field_many2one input').focus();
+ form.$('.o_field_many2one input').val('new partner').trigger('keyup').trigger('blur');
+ $('.modal .modal-footer .btn-primary').click();
+ assert.strictEqual($('.modal .o_form_view').length, 1,
'a new modal should be opened and contain a form view');
form.destroy();
diff --git a/addons/website_crm_partner_assign/models/crm_lead.py b/addons/website_crm_partner_assign/models/crm_lead.py
index b73be955c42..ce914a5fc4d 100644
--- a/addons/website_crm_partner_assign/models/crm_lead.py
+++ b/addons/website_crm_partner_assign/models/crm_lead.py
@@ -267,7 +267,7 @@ class CrmLead(models.Model):
'name': values['title'],
'description': values['description'],
'priority': '2',
- 'partner_assigned_id': user.partner_id.id,
+ 'partner_assigned_id': user.commercial_partner_id.id,
}
if tag_own:
values['tag_ids'] = [(4, tag_own.id, False)]