[IMP] mass_mailing: allow users to choose a specific outgoing mail server
Purpose of this commit is to allow mass mailing users to select an outgoing mail sever when performing mass mailing. It includes * add a field in mass_mailing to select specific outgoing mail server; it is put in debug mode because it sounds people would not understand what is its purpose; * add an option in settings to set a default outgoing mail server; * give read access to ir.mail_server to mass_mailing users; This commit is related to task ID 31737.
This commit is contained in:
committed by
Thibault Delavallée
parent
7cee389e78
commit
507c1e03a7
@@ -6,6 +6,7 @@ import hmac
|
||||
import logging
|
||||
import random
|
||||
import threading
|
||||
from ast import literal_eval
|
||||
|
||||
from odoo import api, fields, models, tools, _
|
||||
from odoo.exceptions import UserError
|
||||
@@ -360,6 +361,15 @@ class MassMailing(models.Model):
|
||||
_inherits = {'utm.source': 'source_id'}
|
||||
_rec_name = "source_id"
|
||||
|
||||
@api.model
|
||||
def _get_default_mail_server_id(self):
|
||||
server_id = self.env['ir.config_parameter'].sudo().get_param('mass_mailing.mail_server_id')
|
||||
try:
|
||||
server_id = literal_eval(server_id) if server_id else False
|
||||
return self.env['ir.mail_server'].search([('id', '=', server_id)]).id
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields):
|
||||
res = super(MassMailing, self).default_get(fields)
|
||||
@@ -403,6 +413,9 @@ class MassMailing(models.Model):
|
||||
default=lambda self: self.env.ref('mass_mailing.model_mail_mass_mailing_list').id)
|
||||
mailing_model_name = fields.Char(related='mailing_model_id.model', string='Recipients Model Name', readonly=True, related_sudo=True)
|
||||
mailing_domain = fields.Char(string='Domain', oldname='domain', default=[])
|
||||
mail_server_id = fields.Many2one('ir.mail_server', string='Mail Server',
|
||||
default=_get_default_mail_server_id,
|
||||
help="Use a specific mail server in priority. Otherwise Odoo relies on the first outgoing mail server available (based on their sequencing) as it does for normal mails.")
|
||||
contact_list_ids = fields.Many2many('mail.mass_mailing.list', 'mail_mass_mailing_list_rel',
|
||||
string='Mailing Lists')
|
||||
contact_ab_pc = fields.Integer(string='A/B Testing percentage',
|
||||
@@ -760,6 +773,7 @@ class MassMailing(models.Model):
|
||||
'mass_mailing_id': mailing.id,
|
||||
'mailing_list_ids': [(4, l.id) for l in mailing.contact_list_ids],
|
||||
'no_auto_thread': mailing.reply_to_mode != 'thread',
|
||||
'mail_server_id': mailing.mail_server_id.id,
|
||||
}
|
||||
if mailing.reply_to_mode == 'email':
|
||||
composer_values['reply_to'] = mailing.reply_to
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
group_mass_mailing_campaign = fields.Boolean(string="Mass Mailing Campaigns", implied_group='mass_mailing.group_mass_mailing_campaign', help="""This is useful if your marketing campaigns are composed of several emails""")
|
||||
mass_mailing_outgoing_mail_server = fields.Boolean(string="Specific Mail Server", config_parameter='mass_mailing.outgoing_mail_server',
|
||||
help='Use a specific mail server in priority. Otherwise Odoo relies on the first outgoing mail server available (based on their sequencing) as it does for normal mails.')
|
||||
mass_mailing_mail_server_id = fields.Many2one('ir.mail_server', string='Mail Server', config_parameter='mass_mailing.mail_server_id')
|
||||
|
||||
@api.onchange('mass_mailing_outgoing_mail_server')
|
||||
def _onchange_mass_mailing_outgoing_mail_server(self):
|
||||
if not self.mass_mailing_outgoing_mail_server:
|
||||
self.mass_mailing_mail_server_id = False
|
||||
|
||||
@@ -10,4 +10,5 @@ access_mass_mailing_system,mail.mass_mailing.system,model_mail_mass_mailing,base
|
||||
access_mail_mail_statistics_user,mail.mail.statistics,model_mail_mail_statistics,base.group_user,1,1,1,1
|
||||
access_mail_mail_statistics_mass_mailing_user,mail.mail.statistics,model_mail_mail_statistics,mass_mailing.group_mass_mailing_user,1,1,1,1
|
||||
access_mail_statistics_report,mail.statistics.report,model_mail_statistics_report,mass_mailing.group_mass_mailing_user,1,1,1,1
|
||||
access_utm_source,access_utm_source,utm.model_utm_source,mass_mailing.group_mass_mailing_user,1,1,1,0
|
||||
access_utm_source,access_utm_source,utm.model_utm_source,mass_mailing.group_mass_mailing_user,1,1,1,0
|
||||
access_ir_mail_server,access_ir_mail_server,base.model_ir_mail_server,mass_mailing.group_mass_mailing_user,1,0,0,0
|
||||
|
||||
|
@@ -531,6 +531,7 @@
|
||||
<div>
|
||||
<field name="attachment_ids" widget="many2many_binary" string="Attach a file" class="oe_inline"/>
|
||||
</div>
|
||||
<field name="mail_server_id" groups="base.group_no_one" options="{'no_create': True, 'no_open': True}"/>
|
||||
<field name="schedule_date" />
|
||||
<field name="keep_archives" groups="base.group_no_one"/>
|
||||
<field name="create_date" readonly="1" attrs="{'invisible': [('create_date', '=', False)]}"/>
|
||||
|
||||
@@ -28,6 +28,22 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 o_setting_box col-xs-12">
|
||||
<div class="o_setting_left_pane" title="Use a specific mail server in priority. Otherwise Odoo relies on the first outgoing mail server available (based on their sequencing) as it does for normal mails.">
|
||||
<field name="mass_mailing_outgoing_mail_server"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="mass_mailing_outgoing_mail_server"/>
|
||||
<div class="text-muted">
|
||||
Use a specific mail server for mailings
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('mass_mailing_outgoing_mail_server', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<field name="mass_mailing_mail_server_id" options="{'no_create': True, 'no_open': True}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2>Mailing Lists</h2>
|
||||
<div id="mailing_list" class="row mt16 o_settings_container"/>
|
||||
|
||||
Reference in New Issue
Block a user