[FIX] mail: fixed content_subtype stripped from context; fixed posting a message...
authorThibault Delavallée <tde@openerp.com>
Fri, 19 Oct 2012 11:34:08 +0000 (13:34 +0200)
committerThibault Delavallée <tde@openerp.com>
Fri, 19 Oct 2012 11:34:08 +0000 (13:34 +0200)
bzr revid: tde@openerp.com-20121019113408-ynxtc73mfaojh56p

addons/mail/res_users.py
addons/mail/static/src/js/mail.js

index c318538..54b8a76 100644 (file)
@@ -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,
index baa9354..d436c46 100644 (file)
@@ -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) {