From 2f2a489e0a2b3141a7b10bbb2c4c5d546f02145f Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Wed, 13 Apr 2011 19:07:27 +0530 Subject: [PATCH] [REVIEW] clean compose wizard with template bzr revid: hmo@tinyerp.com-20110413133727-b2ghap9v5zjmnk9k --- .../wizard/email_compose_message.py | 114 +++++------------- 1 file changed, 29 insertions(+), 85 deletions(-) diff --git a/addons/email_template/wizard/email_compose_message.py b/addons/email_template/wizard/email_compose_message.py index 177d7f035b6..ed42c1788b5 100644 --- a/addons/email_template/wizard/email_compose_message.py +++ b/addons/email_template/wizard/email_compose_message.py @@ -28,82 +28,40 @@ class email_compose_message(osv.osv_memory): _name = 'email.compose.message' _inherit = 'email.compose.message' - def get_template_data(self, cr, uid, res_id, template_id, context=None): - if context is None: - context = {} + def get_template_data(self, cr, uid, template_id, context=None): result = {} - template_pool = self.pool.get('email.template') - if template_id: - template = template_pool.get_email_template(cr, uid, template_id=template_id, context=context) - def _get_template_value(field): - if not template: - return False - if len(context.get('src_rec_ids',[])) > 1: # Multiple Mail: Gets original template values for multiple email change - return getattr(template, field) - else: # Simple Mail: Gets computed template values - return template_pool.get_template_value(cr, uid, getattr(template, field), template.model, context.get('active_id'), context) - result.update({ - 'template_id' : template.id, - 'smtp_server_id' : template.smtp_server_id.id, - 'body' : _get_template_value('body') or False, - 'subject' : _get_template_value('subject') or False, - 'attachment_ids' : template_pool.read(cr, uid, template.id, ['attachment_ids'])['attachment_ids'] or [], - 'res_id' : res_id or False, - 'email_to' : _get_template_value('email_to') or False, - 'email_cc' : _get_template_value('email_cc') or False, - 'email_bcc' : _get_template_value('email_bcc') or False, - 'reply_to' : _get_template_value('reply_to') or False, - 'model' : template.model or False, - }) - return result - - def default_get(self, cr, uid, fields, context=None): + if not template_id: + return result if context is None: context = {} - result = super(email_compose_message, self).default_get(cr, uid, fields, context=context) - template_id = context.get('template_id', False) - vals = {} - if template_id and context.get('active_model') and context.get('active_id'): - vals = self.get_template_data(cr, uid, context.get('active_id'), template_id, context) - if not vals: - return result + template_pool = self.pool.get('email.template') + resource_id = context.get('active_id') + template = template_pool.get_email_template(cr, uid, template_id=template_id, context=context) - if 'template_id' in fields: - result.update({'template_id' : vals.get('template_id', False)}) + def _get_template_value(field): + if context.get('mass_mail',False): # Multiple Mail: Gets original template values for multiple email change + return getattr(template, field) + else + return self.get_template_value(cr, uid, getattr(template, field), template.model, resource_id, context=context) - if 'smtp_server_id' in fields: - result.update({'smtp_server_id' : vals.get('smtp_server_id', False)}) - - if 'attachment_ids' in fields: - result.update({'attachment_ids' : vals.get('attachment_ids', False)}) - - if 'model' in fields: - result.update({'model' : vals.get('model', False)}) - - if 'res_id' in fields: - result.update({'res_id' : vals.get('res_id', False)}) - - if 'email_to' in fields: - result.update({'email_to' : vals.get('email_to', False)}) - - if 'email_cc' in fields: - result.update({'email_cc' : vals.get('email_cc', False)}) - - if 'email_bcc' in fields: - result.update({'email_bcc' : vals.get('email_bcc', False)}) - - if 'subject' in fields: - result.update({'subject' : vals.get('name', False)}) - - if 'body' in fields: - result.update({'body' : vals.get('body', False)}) - - if 'reply_to' in fields: - result.update({'reply_to' : vals.get('reply_to', False)}) + result.update({ + 'template_id' : template.id, + 'smtp_server_id' : template.smtp_server_id.id, + 'body' : _get_template_value('body') or False, + 'subject' : _get_template_value('subject') or False, + 'attachment_ids' : template_pool.read(cr, uid, template.id, ['attachment_ids'])['attachment_ids'] or [], + 'res_id' : resource_id or False, + 'email_to' : _get_template_value('email_to') or False, + 'email_cc' : _get_template_value('email_cc') or False, + 'email_bcc' : _get_template_value('email_bcc') or False, + 'reply_to' : _get_template_value('reply_to') or False, + 'model' : template.model or False, + }) return result + def _get_templates(self, cr, uid, context=None): """ Return Email Template of particular Model. @@ -132,27 +90,13 @@ class email_compose_message(osv.osv_memory): template_pool = self.pool.get('email.template') return template_pool.get_template_value(cr, uid, message, model, resource_id, context) - def on_change_template(self, cr, uid, ids, model, template_id, context=None): + def on_change_template(self, cr, uid, template_id, context=None): if context is None: context = {} - if context.get('mail') == 'reply': - return {'value':{}} - vals = {} + resource_id = context.get('active_id', False) - if template_id and resource_id: - vals.update(self.get_template_data(cr, uid, resource_id, template_id, context)) - else: - vals.update({'attachment_ids' : []}) - - email_temp_pool = self.pool.get('email.template') - template_data = email_temp_pool.browse(cr, uid, template_id, context=context) - vals.update({'auto_delete': template_data.auto_delete}) - if context.get('active_model') and context.get('active_id') and template_data.user_signature: - model_pool = self.pool.get(context['active_model']) - user = model_pool.browse(cr, uid, context['active_id'], context=context).user_id - signature = user and user.signature or '' - vals['body'] = vals['body'] + '\n' + signature - return {'value': vals} + + return self.get_template_data(cr, uid, resource_id, template_id, context) email_compose_message()