From ee08ed5a57ce978f14054e7eb6b0b714f28e49f4 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 4 Jan 2013 15:48:33 +0100 Subject: [PATCH] [FIX] mail: default_partner_ids bzr revid: chm@openerp.com-20130104144833-1wf6fc00jl6vrmri --- addons/mail/static/src/js/mail.js | 18 ++++++++++-------- addons/mail/wizard/mail_compose_message.py | 1 + 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 56494a3aa91..fc6ddb5efde 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -514,14 +514,17 @@ openerp.mail = function (session) { // create list of new partners this.check_recipient_partners().done(function () { var context = { - 'default_model': default_composition_mode == 'reply' ? undefined : self.context.default_model, - 'default_res_id': default_composition_mode == 'reply' ? undefined : self.context.default_res_id, 'default_composition_mode': default_composition_mode, 'default_parent_id': self.id, 'default_body': mail.ChatterUtils.get_text2html(self.$el ? (self.$el.find('textarea:not(.oe_compact)').val() || '') : ''), 'default_attachment_ids': self.attachment_ids, 'default_partner_ids': _.map(_.filter(self.partners_from, function (f) {return f[1]}), function (f) {return f[0]}), }; + if (default_composition_mode != 'reply' && self.context.default_model && self.context.default_res_id) { + context.default_model = self.context.default_model; + context.default_res_id = self.context.default_res_id; + } + var action = { type: 'ir.actions.act_window', res_model: 'mail.compose.message', @@ -570,19 +573,19 @@ openerp.mail = function (session) { check_recipient_partners: function () { var self = this; var emails = []; + var deferreds = []; _.each(this.emails_from, function (email_from) { if (email_from[1]) { if (!_.find(emails, function (email) {return email[4] == email_from[0][4];})) { emails.push(email_from[0]); + deferreds.push($.Deferred()); } } }); - var deferreds = []; - var ds_partner = new session.web.DataSetSearch(this, 'res.partner'); this.partners_from = []; - _.each(emails, function (email) { - var deferred = $.Deferred(); - deferreds.push(deferred); + var ds_partner = new session.web.DataSetSearch(this, 'res.partner'); + _.each(emails, function (email, key) { + var deferred = deferreds[key]; ds_partner.call('search', [[['email', 'like', email[4]]]]).then(function (partner_ids) { if (!partner_ids.length) { var pop = new session.web.form.FormOpenPopup(this); @@ -611,7 +614,6 @@ openerp.mail = function (session) { self.partners_from.push([partner_ids[0], true]); deferred.resolve(); } - return deferred; }); }); return $.when.apply( $, deferreds ); diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index 0062b5e01bd..229d72455d1 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -168,6 +168,7 @@ class mail_compose_message(osv.TransientModel): reply_subject = "%s %s" % (re_prefix, reply_subject) # get partner_ids from original message partner_ids = [partner.id for partner in message_data.partner_ids] if message_data.partner_ids else [] + partner_ids += context.get('default_partner_ids') or [] # update the result result = {