46 lines
1.9 KiB
Python
46 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models, _
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class MassMailingListMerge(models.TransientModel):
|
|
_name = 'mailing.list.merge'
|
|
_description = 'Merge Mass Mailing List'
|
|
|
|
@api.model
|
|
def default_get(self, fields):
|
|
res = super(MassMailingListMerge, self).default_get(fields)
|
|
|
|
if not res.get('src_list_ids') and 'src_list_ids' in fields:
|
|
if self.env.context.get('active_model') != 'mailing.list':
|
|
raise UserError(_('You can only apply this action from Mailing Lists.'))
|
|
src_list_ids = self.env.context.get('active_ids')
|
|
res.update({
|
|
'src_list_ids': [(6, 0, src_list_ids)],
|
|
})
|
|
if not res.get('dest_list_id') and 'dest_list_id' in fields:
|
|
src_list_ids = res.get('src_list_ids') or self.env.context.get('active_ids')
|
|
res.update({
|
|
'dest_list_id': src_list_ids and src_list_ids[0] or False,
|
|
})
|
|
return res
|
|
|
|
src_list_ids = fields.Many2many('mailing.list', string='Mailing Lists')
|
|
dest_list_id = fields.Many2one('mailing.list', string='Destination Mailing List')
|
|
merge_options = fields.Selection([
|
|
('new', 'Merge into a new mailing list'),
|
|
('existing', 'Merge into an existing mailing list'),
|
|
], 'Merge Option', required=True, default='new')
|
|
new_list_name = fields.Char('New Mailing List Name')
|
|
archive_src_lists = fields.Boolean('Archive source mailing lists', default=True)
|
|
|
|
def action_mailing_lists_merge(self):
|
|
if self.merge_options == 'new':
|
|
self.dest_list_id = self.env['mailing.list'].create({
|
|
'name': self.new_list_name,
|
|
}).id
|
|
self.dest_list_id.action_merge(self.src_list_ids, self.archive_src_lists)
|
|
return self.dest_list_id
|