diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index c318538541f..54b8a76703f 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -126,6 +126,19 @@ class res_users(osv.Model): return self.pool.get('res.partner').message_post_api(cr, uid, partner_id, body=body, subject=subject, type=type, subtype=subtype, parent_id=parent_id, attachments=attachments, context=context, **kwargs) + def message_post(self, cr, uid, thread_id, context=None, **kwargs): + """ Redirect the posting of message on res.users to the related partner. + This is done because when giving the context of Chatter on the + various mailboxes, we do not have access to the current partner_id. + We therefore post on the user and redirect on its partner. """ + assert thread_id, "res.users does not support posting global messages" + if context and 'thread_model' in context: + context['thread_model'] = 'res.partner' + if isinstance(thread_id, (list, tuple)): + thread_id = thread_id[0] + partner_id = self.pool.get('res.users').read(cr, uid, thread_id, ['partner_id'], context=context)['partner_id'][0] + return self.pool.get('res.partner').message_post(cr, uid, partner_id, context=context, **kwargs) + def message_update(self, cr, uid, ids, msg_dict, update_vals=None, context=None): partner_id = self.pool.get('res.users').browse(cr, uid, ids)[0].partner_id.id return self.pool.get('res.partner').message_update(cr, uid, [partner_id], msg_dict, diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index baa9354d9b3..d436c46e9e8 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -23,7 +23,7 @@ openerp.mail = function(session) { */ var context_keys = ['default_template_id', 'default_composition_mode', 'default_use_template', 'default_partner_ids', 'default_model', - 'default_res_id', 'default_subtype', 'active_id', 'lang', + 'default_res_id', 'default_content_subtype', 'active_id', 'lang', 'bin_raw', 'tz', 'active_model', 'edi_web_url_view', 'active_ids'] for (var key in action.context) { if (_.indexOf(context_keys, key) == -1) {