[IMP] base_setup, mail, hr: allow to configure company alias domains

PURPOSE

Allow alias domains to be multiple, notably to be used in a multi company
environment where each company has its own alias domain.

SPECIFICATIONS

Update settings to configure your company's current alias domain instead
of the global 'alias.catchall.domain' configuration parameter. As domain
configuration is globally done per company, this is now a related on the
company. Advanced configuration and management can still be done manually
in settings.

Field 'external_email_server_default' triggering display of mail configuration
is moved to mail. It is defined in 'base_setup' but used only in mail hence
moving the field to be coherent.

Task-36879 (Mail: Support Multi Domains Aliases)

Part-of: odoo/odoo#76734
This commit is contained in:
Thibault Delavallée
2023-10-24 19:24:50 +00:00
parent 9345060498
commit 11def7563e
4 changed files with 24 additions and 14 deletions
@@ -15,9 +15,6 @@ class ResConfigSettings(models.TransientModel):
user_default_rights = fields.Boolean(
"Default Access Rights",
config_parameter='base_setup.default_user_rights')
external_email_server_default = fields.Boolean(
"Use Custom Email Servers",
config_parameter='base_setup.default_external_email_server')
module_base_import = fields.Boolean("Allow users to import data from CSV/XLS/XLSX/ODS files")
module_google_calendar = fields.Boolean(
string='Allow the users to synchronize their calendar with Google Calendar')
@@ -14,18 +14,19 @@
help="Create expenses from incoming emails"
title="Send an email to this email alias with the receipt in attachment to create an expense in one click. If the first word of the mail subject contains the category's internal reference or the category name, the corresponding category will automatically be set. Type the expense amount in the mail subject to set it on the expense too.">
<field name="hr_expense_use_mailgateway"/>
<div class="content-group" invisible="not hr_expense_use_mailgateway or alias_domain in ['localhost', '', False]">
<div class="mt16">
<div class="content-group" invisible="not hr_expense_use_mailgateway or not alias_domain_id">
<div class="mt16 d-flex align-items-start">
<label for="hr_expense_alias_prefix" string="Alias" class="o_light_label"/>
<field name="hr_expense_alias_prefix" class="oe_inline ps-2"/>
<span>@</span>
<field name="alias_domain" class="oe_inline" readonly="1" force_save="1"/>
<field name="alias_domain_id" class="oe_inline" placeholder="e.g. domain.com"
options="{'no_create': True, 'no_open': True}"/>
</div>
</div>
<div class="content-group" invisible="not hr_expense_use_mailgateway or alias_domain not in ['localhost', '', False]">
<div class="content-group" invisible="not hr_expense_use_mailgateway or alias_domain_id">
<div class="mt16">
<button type="action" name="base_setup.action_general_configuration"
icon="oi-arrow-right" string="Setup your domain alias" class="btn-link"/>
icon="oi-arrow-right" string="Setup your alias domain" class="btn-link"/>
</div>
</div>
</setting>
+6 -2
View File
@@ -12,9 +12,13 @@ class ResConfigSettings(models.TransientModel):
the alias domain. """
_inherit = 'res.config.settings'
external_email_server_default = fields.Boolean(
"Use Custom Email Servers",
config_parameter='base_setup.default_external_email_server')
fail_counter = fields.Integer('Fail Mail', compute="_compute_fail_counter")
alias_domain = fields.Char(
'Alias Domain', config_parameter='mail.catchall.domain',
alias_domain_id = fields.Many2one(
'mail.alias.domain', 'Alias Domain',
readonly=False, related='company_id.alias_domain_id',
help="If you have setup a catch-all email domain redirected to the Odoo server, enter the domain name here.")
module_google_gmail = fields.Boolean('Support Gmail Authentication')
module_microsoft_outlook = fields.Boolean('Support Outlook Authentication')
@@ -33,7 +33,18 @@
</div>
</div>
</setting>
<setting string="Use a Gmail Server" help="Send and receive emails through your Gmail account." documentation="https://console.developers.google.com/" invisible="not external_email_server_default">
<setting id="email-alias-setting" string="Alias Domain"
help="Use different domains for your mail aliases"
company_dependent="1"
documentation="/applications/general/email_communication/email_domain.html#be-spf-compliant">
<span class="me-1">@</span>
<field name="alias_domain_id" placeholder="e.g. domain.com"
options="{'no_create_edit': True}"/>
</setting>
<setting string="Use a Gmail Server"
help="Send and receive emails through your Gmail account."
documentation="https://console.developers.google.com/"
invisible="not external_email_server_default">
<field name="module_google_gmail"/>
<div class="content-group" invisible="not module_google_gmail" id="msg_module_google_gmail">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
@@ -51,9 +62,6 @@
</div>
</div>
</setting>
<setting id="email-alias-setting" string="Alias Domain" help="Use a different domain for your mail aliases" documentation="/applications/general/email_communication/email_domain.html#be-spf-compliant">
<span>@<field name="alias_domain" placeholder='e.g. "mycompany.com"'/></span>
</setting>
<setting help="Add your twilio credentials for ICE servers">
<field name="use_twilio_rtc_servers"/>
<div class="content-group" invisible="not use_twilio_rtc_servers">