[FIX] mass_mailing: fixes:
[odoo/odoo.git] / addons / mass_mailing / wizard / mail_compose_message.py
1 # -*- coding: utf-8 -*-
2
3 from openerp.osv import osv, fields
4
5
6 class MailComposeMessage(osv.TransientModel):
7     """Add concept of mass mailing campaign to the mail.compose.message wizard
8     """
9     _inherit = 'mail.compose.message'
10
11     _columns = {
12         'mass_mailing_campaign_id': fields.many2one(
13             'mail.mass_mailing.campaign', 'Mass Mailing Campaign',
14         ),
15         'mass_mailing_id': fields.many2one(
16             'mail.mass_mailing', 'Mass Mailing'
17         ),
18         'mass_mailing_name': fields.char('Mass Mailing'),
19         'mailing_list_ids': fields.many2many(
20             'mail.mass_mailing.list', string='Mailing List'
21         ),
22     }
23
24     def get_mail_values(self, cr, uid, wizard, res_ids, context=None):
25         """ Override method that generated the mail content by creating the
26         mail.mail.statistics values in the o2m of mail_mail, when doing pure
27         email mass mailing. """
28         res = super(MailComposeMessage, self).get_mail_values(cr, uid, wizard, res_ids, context=context)
29         # use only for allowed models in mass mailing
30         if wizard.composition_mode == 'mass_mail' and \
31                 (wizard.mass_mailing_name or wizard.mass_mailing_id) and \
32                 wizard.model in [item[0] for item in self.pool['mail.mass_mailing']._get_mailing_model(cr, uid, context=context)]:
33             mass_mailing = wizard.mass_mailing_id
34             if not mass_mailing:
35                 mass_mailing_id = self.pool['mail.mass_mailing'].create(
36                     cr, uid, {
37                         'mass_mailing_campaign_id': wizard.mass_mailing_campaign_id and wizard.mass_mailing_campaign_id.id or False,
38                         'name': wizard.mass_mailing_name,
39                         'template_id': wizard.template_id and wizard.template_id.id or False,
40                         'state': 'done',
41                         'mailing_type': wizard.model,
42                         'mailing_domain': wizard.active_domain,
43                     }, context=context)
44                 mass_mailing = self.pool['mail.mass_mailing'].browse(cr, uid, mass_mailing_id, context=context)
45             for res_id in res_ids:
46                 res[res_id].update({
47                     'mailing_id':  mass_mailing.id,
48                     'statistics_ids': [(0, 0, {
49                         'model': wizard.model,
50                         'res_id': res_id,
51                         'mass_mailing_id': mass_mailing.id,
52                     })],
53                     # email-mode: keep original message for routing
54                     'notification': mass_mailing.reply_to_mode == 'thread',
55                     'auto_delete': True,
56                 })
57         return res