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.
56 lines
2.4 KiB
56 lines
2.4 KiB
# -*- coding: utf-8 -*-
|
|
from openerp import api, models
|
|
|
|
|
|
class MailTemplate(models.Model):
|
|
|
|
_inherit = "mail.template"
|
|
|
|
@api.multi
|
|
def send_mail_with_multiple_attachments(self, res_id,
|
|
additional_attachments,
|
|
force_send=False,
|
|
raise_exception=False):
|
|
"""Generates a new mail message for the given template and record,
|
|
and schedules it for delivery through the ``mail``
|
|
module's scheduler.
|
|
|
|
:param int res_id: id of the record to render the template with
|
|
(model is taken from the template)
|
|
:param bool force_send: if True, the generated mail.message is
|
|
immediately sent after being created, as if the scheduler
|
|
was executed for this message only.
|
|
:returns: id of the mail.message that was created
|
|
"""
|
|
self.ensure_one()
|
|
Mail = self.env['mail.mail']
|
|
Attachment = self.env['ir.attachment'] # TDE FIXME: should remove dfeault_type from context
|
|
|
|
# create a mail_mail based on values, without attachments
|
|
values = self.generate_email(res_id)
|
|
values['recipient_ids'] = [(4, pid) for pid in values.get('partner_ids', list())]
|
|
attachment_ids = values.pop('attachment_ids', [])
|
|
attachments = values.pop('attachments', [])
|
|
# add a protection against void email_from
|
|
if 'email_from' in values and not values.get('email_from'):
|
|
values.pop('email_from')
|
|
mail = Mail.create(values)
|
|
|
|
# manage attachments
|
|
attachments.extend(additional_attachments)
|
|
for attachment in attachments:
|
|
attachment_data = {
|
|
'name': attachment[0],
|
|
'datas_fname': attachment[0],
|
|
'datas': attachment[1],
|
|
'res_model': 'mail.message',
|
|
'res_id': mail.mail_message_id.id,
|
|
}
|
|
attachment_ids.append(Attachment.create(attachment_data).id)
|
|
if attachment_ids:
|
|
values['attachment_ids'] = [(6, 0, attachment_ids)]
|
|
mail.write({'attachment_ids': [(6, 0, attachment_ids)]})
|
|
|
|
if force_send:
|
|
mail.send(raise_exception=raise_exception)
|
|
return mail.id # TDE CLEANME: return mail + api.returns ?
|