diff --git a/addons/email_template/tests/test_mail.py b/addons/email_template/tests/test_mail.py
index 68a5f5d4df5..8837796bf9f 100644
--- a/addons/email_template/tests/test_mail.py
+++ b/addons/email_template/tests/test_mail.py
@@ -100,19 +100,22 @@ class test_message_compose(test_mail_mockup.TestMailMockups):
# ----------------------------------------
# 1. Comment on pigs
- compose_id = mail_compose.create(cr, uid,
- {'subject': 'Forget me subject', 'body': 'Dummy body'},
- {'default_composition_mode': 'comment',
- 'default_model': 'mail.group',
- 'default_res_id': self.group_pigs_id,
- 'default_use_template': False,
- 'default_template_id': email_template_id,
- 'active_ids': [self.group_pigs_id, self.group_bird_id]})
- compose = mail_compose.browse(cr, uid, compose_id)
-
- # 2. Perform 'toggle_template', to set use_template and use template_id
- mail_compose.toggle_template(cr, uid, [compose_id], {'default_composition_mode': 'comment', 'default_model': 'mail.group'})
+ context = {
+ 'default_composition_mode': 'comment',
+ 'default_model': 'mail.group',
+ 'default_res_id': self.group_pigs_id,
+ 'default_use_template': False,
+ 'default_template_id': email_template_id,
+ 'active_ids': [self.group_pigs_id, self.group_bird_id]
+ }
+ compose_id = mail_compose.create(cr, uid, {'subject': 'Forget me subject', 'body': 'Dummy body'}, context)
+ compose = mail_compose.browse(cr, uid, compose_id, context)
+ onchange_res = compose.onchange_template_id(email_template_id, 'comment', 'mail.group', self.group_pigs_id)['value']
+ onchange_res['partner_ids'] = [(4, partner_id) for partner_id in onchange_res.pop('partner_ids', [])]
+ onchange_res['attachment_ids'] = [(4, attachment_id) for attachment_id in onchange_res.pop('attachment_ids', [])]
+ compose.write(onchange_res)
compose.refresh()
+
message_pids = [partner.id for partner in compose.partner_ids]
partner_ids = self.res_partner.search(cr, uid, [('email', 'in', ['b@b.b', 'c@c.c', 'd@d.d'])])
# Test: mail.compose.message: subject, body, partner_ids
@@ -127,40 +130,34 @@ class test_message_compose(test_mail_mockup.TestMailMockups):
self.assertIn((attach.name, base64.b64decode(attach.datas)), _attachments_test,
'mail.message attachment name / data incorrect')
- # 3. Perform 'toggle_template': template is not set anymore
- mail_compose.toggle_template(cr, uid, [compose_id], {'default_composition_mode': 'comment', 'default_model': 'mail.group'})
- compose.refresh()
- # Test: subject, body, partner_ids
- self.assertEqual(compose.subject, False, 'mail.compose.message subject incorrect')
- self.assertEqual(compose.body, '', 'mail.compose.message body incorrect')
-
# ----------------------------------------
# CASE3: mass_mail with template
# ----------------------------------------
# 1. Mass_mail on pigs and bird, with a default_partner_ids set to check he is correctly added
- compose_id = mail_compose.create(cr, uid,
- {'subject': 'Forget me subject', 'body': 'Dummy body'},
- {'default_composition_mode': 'mass_mail',
- 'default_model': 'mail.group',
- 'default_res_id': self.group_pigs_id,
- 'default_use_template': False,
- 'default_template_id': email_template_id,
- 'default_partner_ids': [p_a_id],
- 'active_ids': [self.group_pigs_id, self.group_bird_id]})
- compose = mail_compose.browse(cr, uid, compose_id)
-
- # 2. Perform 'toggle_template', to set use_template and use template_id
- mail_compose.toggle_template(cr, uid, [compose_id], {'default_composition_mode': 'comment', 'default_model': 'mail.group'})
+ context = {
+ 'default_composition_mode': 'mass_mail',
+ 'default_model': 'mail.group',
+ 'default_res_id': self.group_pigs_id,
+ 'default_template_id': email_template_id,
+ 'default_partner_ids': [p_a_id],
+ 'active_ids': [self.group_pigs_id, self.group_bird_id]
+ }
+ compose_id = mail_compose.create(cr, uid, {'subject': 'Forget me subject', 'body': 'Dummy body'}, context)
+ compose = mail_compose.browse(cr, uid, compose_id, context)
+ onchange_res = compose.onchange_template_id(email_template_id, 'mass_mail', 'mail.group', self.group_pigs_id)['value']
+ onchange_res['partner_ids'] = [(4, partner_id) for partner_id in onchange_res.pop('partner_ids', [])]
+ onchange_res['attachment_ids'] = [(4, attachment_id) for attachment_id in onchange_res.pop('attachment_ids', [])]
+ compose.write(onchange_res)
compose.refresh()
+
message_pids = [partner.id for partner in compose.partner_ids]
partner_ids = [p_a_id]
- # Test: mail.compose.message: subject, body, partner_ids
self.assertEqual(compose.subject, '${object.name}', 'mail.compose.message subject incorrect')
self.assertEqual(compose.body, '${object.description}', 'mail.compose.message body incorrect')
self.assertEqual(set(message_pids), set(partner_ids), 'mail.compose.message partner_ids incorrect')
- # 3. Post the comment, get created message
+ # 2. Post the comment, get created message
mail_compose.send_mail(cr, uid, [compose_id], {'default_res_id': -1, 'active_ids': [self.group_pigs_id, self.group_bird_id]})
group_pigs.refresh()
group_bird.refresh()
diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py
index 06d8cc1ee91..168d93cdbe5 100644
--- a/addons/email_template/wizard/mail_compose_message.py
+++ b/addons/email_template/wizard/mail_compose_message.py
@@ -19,11 +19,8 @@
#
##############################################################################
-import tools
-
-from osv import osv
-from osv import fields
-
+from openerp import tools
+from openerp.osv import osv, fields
def _reopen(self, res_id, model):
return {'type': 'ir.actions.act_window',
@@ -39,7 +36,6 @@ def _reopen(self, res_id, model):
},
}
-
class mail_compose_message(osv.TransientModel):
_inherit = 'mail.compose.message'
@@ -60,37 +56,19 @@ class mail_compose_message(osv.TransientModel):
record_ids = email_template_obj.search(cr, uid, [('model', '=', model)], context=context)
return email_template_obj.name_get(cr, uid, record_ids, context) + [(False, '')]
- def default_get(self, cr, uid, fields, context=None):
- if context is None:
- context = {}
- result = super(mail_compose_message, self).default_get(cr, uid, fields, context=context)
- result['template_id'] = context.get('default_template_id', context.get('mail.compose.template_id', False))
-
- # pre-render the template if any
- if result.get('use_template') and result.get('template_id'):
- onchange_res = self.onchange_use_template(cr, uid, [], result.get('use_template'), result.get('template_id'),
- result.get('composition_mode'), result.get('model'), result.get('res_id'), context=context)
- result.update(onchange_res['value'])
- return result
-
_columns = {
- 'use_template': fields.boolean('Use Template'),
# incredible hack of the day: size=-1 means we want an int db column instead of an str one
'template_id': fields.selection(_get_templates, 'Template', size=-1),
}
- _defaults = {
- 'use_template': True,
- }
-
- def onchange_template_id(self, cr, uid, ids, use_template, template_id, composition_mode, model, res_id, context=None):
- """ - use_template not set: return default_get
- - use_template set in mass_mailing: we cannot render, so return the template values
- - use_template set: return rendered values """
- if use_template and template_id and composition_mode == 'mass_mail':
+ def onchange_template_id(self, cr, uid, ids, template_id, composition_mode, model, res_id, context=None):
+ """ - mass_mailing: we cannot render, so return the template values
+ - normal mode: return rendered values """
+ if template_id and composition_mode == 'mass_mail':
values = self.pool.get('email.template').read(cr, uid, template_id, ['subject', 'body_html'], context)
values.pop('id')
- elif use_template and template_id:
+ elif template_id:
+ # FIXME odo: change the mail generation to avoid attachment duplication
values = self.generate_email_for_composer(cr, uid, template_id, res_id, context=context)
# transform attachments into attachment_ids
values['attachment_ids'] = []
@@ -106,35 +84,12 @@ class mail_compose_message(osv.TransientModel):
}
values['attachment_ids'].append(ir_attach_obj.create(cr, uid, data_attach, context=context))
else:
- values = self.default_get(cr, uid, ['body', 'body_html', 'subject', 'partner_ids', 'attachment_ids'], context=context)
+ values = self.default_get(cr, uid, ['body', 'subject', 'partner_ids', 'attachment_ids'], context=context)
if values.get('body_html'):
values['body'] = values.pop('body_html')
- values.update(use_template=use_template, template_id=template_id)
return {'value': values}
- def toggle_template(self, cr, uid, ids, context=None):
- """ hit toggle template mode button: calls onchange_use_template to
- emulate an on_change, then writes the values to update the form. """
- for record in self.browse(cr, uid, ids, context=context):
- onchange_res = self.onchange_use_template(cr, uid, ids, not record.use_template,
- record.template_id, record.composition_mode, record.model, record.res_id, context=context).get('value', {})
- # update partner_ids and attachment_ids
- onchange_res['partner_ids'] = [(4, partner_id) for partner_id in onchange_res.pop('partner_ids', [])]
- onchange_res['attachment_ids'] = [(4, attachment_id) for attachment_id in onchange_res.pop('attachment_ids', [])]
- record.write(onchange_res)
- return _reopen(self, record.id, record.model)
-
- def onchange_use_template(self, cr, uid, ids, use_template, template_id, composition_mode, model, res_id, context=None):
- """ onchange_use_template (values: True or False). If use_template is
- False, we do as an onchange with template_id False for values """
- values = self.onchange_template_id(cr, uid, ids, use_template,
- template_id, composition_mode, model, res_id, context=context)
- # force html when using templates
- if use_template:
- values['value']['content_subtype'] = 'html'
- return values
-
def save_as_template(self, cr, uid, ids, context=None):
""" hit save as template button: current form value will be a new
template attached to the current document. """
@@ -155,7 +110,7 @@ class mail_compose_message(osv.TransientModel):
'attachment_ids': [(6, 0, [att.id for att in record.attachment_ids])]
}
template_id = email_template.create(cr, uid, values, context=context)
- record.write(record.onchange_template_id(True, template_id, record.composition_mode, record.model, record.res_id)['value'])
+ record.write(record.onchange_template_id(template_id, record.composition_mode, record.model, record.res_id)['value'])
return _reopen(self, record.id, record.model)
#------------------------------------------------------
@@ -167,7 +122,7 @@ class mail_compose_message(osv.TransientModel):
mail.compose.message, transform email_cc and email_to into partner_ids """
template_values = self.pool.get('email.template').generate_email(cr, uid, template_id, res_id, context=context)
# filter template values
- fields = ['body', 'body_html', 'subject', 'email_to', 'email_recipients', 'email_cc', 'attachments']
+ fields = ['body_html', 'subject', 'email_to', 'email_recipients', 'email_cc', 'attachments']
values = dict((field, template_values[field]) for field in fields if template_values.get(field))
values['body'] = values.pop('body_html', '')
# transform email_to, email_cc into partner_ids
diff --git a/addons/email_template/wizard/mail_compose_message_view.xml b/addons/email_template/wizard/mail_compose_message_view.xml
index 834453aa1c7..34a2112e1ac 100644
--- a/addons/email_template/wizard/mail_compose_message_view.xml
+++ b/addons/email_template/wizard/mail_compose_message_view.xml
@@ -7,24 +7,17 @@
mail.compose.message
-
-
-
-
-
-
- Use template
-
-
-
-
-
-
+
+
+ Use template
+
+
+
+
+