[FIX] mail: compose wizard: fixed default_get overrides not correctly managing the...
authorThibault Delavallée <tde@openerp.com>
Wed, 6 Aug 2014 12:29:48 +0000 (14:29 +0200)
committerThibault Delavallée <tde@openerp.com>
Thu, 7 Aug 2014 06:54:10 +0000 (08:54 +0200)
addons/email_template/wizard/mail_compose_message.py
addons/mail/wizard/mail_compose_message.py

index ebe6675..f79aa77 100644 (file)
@@ -19,7 +19,7 @@
 #
 ##############################################################################
 
-from openerp import tools, SUPERUSER_ID
+from openerp import tools
 from openerp.osv import osv, fields
 
 
@@ -54,6 +54,8 @@ class mail_compose_message(osv.TransientModel):
                     res.get('model'), res.get('res_id'), context=context
                 )['value']
             )
+        if fields is not None:
+            [res.pop(field, None) for field in res.keys() if field not in fields]
         return res
 
     _columns = {
@@ -113,7 +115,9 @@ class mail_compose_message(osv.TransientModel):
                 }
                 values.setdefault('attachment_ids', list()).append(ir_attach_obj.create(cr, uid, data_attach, context=context))
         else:
-            values = self.default_get(cr, uid, ['subject', 'body', 'email_from', 'reply_to', 'attachment_ids', 'mail_server_id'], context=context)
+            default_context = dict(context, default_composition_mode=composition_mode, default_model=model, default_res_id=res_id)
+            default_values = self.default_get(cr, uid, ['composition_mode', 'model', 'res_id', 'subject', 'body', 'email_from', 'reply_to', 'attachment_ids', 'mail_server_id'], context=default_context)
+            values = dict((key, default_values[key]) for key in ['subject', 'body', 'email_from', 'reply_to', 'attachment_ids', 'mail_server_id'] if key in default_values)
 
         if values.get('body_html'):
             values['body'] = values.pop('body_html')
index 66f843c..a33982b 100644 (file)
@@ -68,7 +68,7 @@ class mail_compose_message(osv.TransientModel):
         result = super(mail_compose_message, self).default_get(cr, uid, fields, context=context)
 
         # v6.1 compatibility mode
-        result['composition_mode'] = result.get('composition_mode', context.get('mail.compose.message.mode'))
+        result['composition_mode'] = result.get('composition_mode', context.get('mail.compose.message.mode', 'comment'))
         result['model'] = result.get('model', context.get('active_model'))
         result['res_id'] = result.get('res_id', context.get('active_id'))
         result['parent_id'] = result.get('parent_id', context.get('message_id'))
@@ -97,6 +97,9 @@ class mail_compose_message(osv.TransientModel):
         if result['model'] == 'res.users' and result['res_id'] == uid:
             result['model'] = 'res.partner'
             result['res_id'] = self.pool.get('res.users').browse(cr, uid, uid).partner_id.id
+
+        if fields is not None:
+            [result.pop(field, None) for field in result.keys() if field not in fields]
         return result
 
     def _get_composition_mode_selection(self, cr, uid, context=None):