62 lines
2.5 KiB
Python
62 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from odoo import api, fields, models, _
|
|
|
|
|
|
class ApplicantSendMail(models.TransientModel):
|
|
_name = 'applicant.send.mail'
|
|
_inherit = 'mail.composer.mixin'
|
|
_description = 'Send mails to applicants'
|
|
|
|
applicant_ids = fields.Many2many('hr.applicant', string='Applications', required=True)
|
|
author_id = fields.Many2one('res.partner', 'Author', required=True, default=lambda self: self.env.user.partner_id.id)
|
|
attachment_ids = fields.Many2many('ir.attachment', string='Attachments', readonly=False, store=True)
|
|
|
|
@api.depends('subject')
|
|
def _compute_render_model(self):
|
|
self.render_model = 'hr.applicant'
|
|
|
|
def action_send(self):
|
|
self.ensure_one()
|
|
|
|
without_emails = self.applicant_ids.filtered(lambda a: not a.email_from or (a.partner_id and not a.partner_id.email))
|
|
if without_emails:
|
|
return {
|
|
'type': 'ir.actions.client',
|
|
'tag': 'display_notification',
|
|
'params': {
|
|
'type': 'danger',
|
|
'message': _("The following applicants are missing an email address: %s.", ', '.join(without_emails.mapped(lambda a: a.partner_name or a.display_name))),
|
|
}
|
|
}
|
|
|
|
if self.template_id:
|
|
subjects = self.template_id._render_field('subject', res_ids=self.applicant_ids.ids)
|
|
else:
|
|
subjects = {applicant.id: self.subject for applicant in self.applicant_ids}
|
|
|
|
for applicant in self.applicant_ids:
|
|
if not applicant.partner_id:
|
|
applicant.partner_id = self.env['res.partner'].create({
|
|
'is_company': False,
|
|
'name': applicant.partner_name,
|
|
'email': applicant.email_from,
|
|
'phone': applicant.partner_phone,
|
|
'mobile': applicant.partner_phone,
|
|
})
|
|
|
|
attachment_ids = []
|
|
for attachment_id in self.attachment_ids:
|
|
new_attachment = attachment_id.copy({'res_model': 'hr.applicant', 'res_id': applicant.id})
|
|
attachment_ids.append(new_attachment.id)
|
|
|
|
applicant.message_post(
|
|
author_id=self.author_id.id,
|
|
body=self.body,
|
|
email_layout_xmlid='mail.mail_notification_light',
|
|
message_type='comment',
|
|
partner_ids=applicant.partner_id.ids,
|
|
subject=subjects[applicant.id],
|
|
attachment_ids=attachment_ids
|
|
)
|