[MERGE] forward port branch saas-16 up to 255478acbd

This commit is contained in:
Christophe Simonis
2017-11-07 15:28:28 +01:00
3 changed files with 58 additions and 8 deletions
@@ -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
*/
@@ -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', {
},
});
// 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)');
// 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)');
// 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('focusout');
$('.modal .modal-footer .btn-primary').first().click();
assert.strictEqual($('.modal:visible:last .o_form_view').length, 1,
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();
@@ -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)]