You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

54 lines
1.9 KiB

# -*- coding: utf-8 -*-
# © 2017 Phuc.nt - <phuc.nt@komit-consulting.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
from email.utils import formataddr
from odoo import api, fields, models
from odoo import tools
class MailMail(models.Model):
_inherit = 'mail.mail'
split_mail_by_recipients = fields.Selection([
('split', 'One mail for each recipient'),
('merge', 'One mail for all recipients'),
('default', 'Project Default')],
string='Split mail by recipient partner',
default='default',
)
@api.multi
def send_get_mail_to(self, partner=None):
self.ensure_one()
email_to = super(MailMail, self).send_get_mail_to(partner=partner)
if self._context.get('merge_mail'):
email_to = [formataddr((p.name, p.email))
for p in self.recipient_ids]
if self.email_to:
email_to += tools.email_split_and_format(self.email_to)
logging.info('Merge email_to and recipients to %s', email_to)
return email_to
@api.multi
def send_get_email_dict(self, partner=None):
self.ensure_one()
res = super(MailMail, self).send_get_email_dict(partner=partner)
default = self.env['ir.config_parameter'].get_param(
'default_mail_split_by_partner_conf')
# check option merge or split recipients
send_type = self.split_mail_by_recipients
if send_type == 'merge' or send_type == 'default' and \
default == 'merge':
email_to = []
if self.recipient_ids and partner == self.recipient_ids[0] or \
(not self.recipient_ids and self.email_to):
email_to = self.with_context(
{'merge_mail': True}).send_get_mail_to(partner=partner)
res.update({'email_to': email_to})
return res