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
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
|