[IMP] email.compose.message: mass mailing

* created a method do_mass_mail() for mass maining
* improvements for mass mailing in case of template, took the value from wizard and evaluated using mako template

bzr revid: rha@tinyerp.com-20110411121032-j4u2ao710vc1dt8k
This commit is contained in:
Rifakat Haradwala (Open ERP) 2011-04-11 17:40:32 +05:30
parent 0db9b58ef9
commit fbad6f6767
1 changed files with 36 additions and 0 deletions

View File

@ -151,9 +151,45 @@ class email_compose_message(osv.osv_memory):
def send_mail(self, cr, uid, ids, context=None):
if context is None:
context = {}
record = self.browse(cr, uid, ids[0], context=context)
if context.get('mass_mail') and context['active_ids'] and context.get('template_id'):
email_message_pool = self.pool.get('email.message')
email_temp_pool = self.pool.get('email.template')
for res_id in context['active_ids']:
subject = email_temp_pool.get_template_value(cr, uid, record.subject, context['active_model'], res_id)
body = email_temp_pool.get_template_value(cr, uid, record.body, context['active_model'], res_id)
email_to = email_temp_pool.get_template_value(cr, uid, record.email_to, context['active_model'], res_id)
email_from = email_temp_pool.get_template_value(cr, uid, record.email_from, context['active_model'], res_id)
email_cc = email_temp_pool.get_template_value(cr, uid, record.email_cc, context['active_model'], res_id)
reply_to = email_temp_pool.get_template_value(cr, uid, record.reply_to, context['active_model'], res_id)
email_id = email_message_pool.schedule_with_attach(cr, uid, email_from,
email_to, subject or False, body or False, context['active_model'], email_cc or False, openobject_id=int(res_id),
context=context)
return {'type': 'ir.actions.act_window_close'}
if context.get('mass_mail') and context.get('active_ids') and not context.get('template_id'):
self.do_mass_mail(cr, uid, context['active_ids'], record.subject or False, record.body or False, context=context)
return {'type': 'ir.actions.act_window_close'}
email_id = self.save_to_mailbox(cr, uid, ids, context)
return {'type': 'ir.actions.act_window_close'}
def do_mass_mail(self, cr, uid, ids, subject, body, context=None):
if context is None:
context = {}
if context.get('active_model'):
email_message_pool = self.pool.get('email.message')
model_pool = self.pool.get(context['active_model'])
for data in model_pool.browse(cr, uid, ids, context=context):
email_id = email_message_pool.schedule_with_attach(cr, uid,
data.user_id and data.user_id.address_id and data.user_id.address_id.email or False,
data.email_from or False, subject, body, model=context['active_model'],
email_cc=tools.ustr(data.email_cc or ''), openobject_id=int(data.id), context=context)
return True
def save_to_mailbox(self, cr, uid, ids, context=None):
email_ids = []
email_message_pool = self.pool.get('email.message')