Files
odoo_source/addons/mail/views/mail_alias_views.xml
T
Thibault Delavallée e8a41762ad [IMP] mail: link 'mail.alias_domain' to aliases
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

Add 'mail.alias.domain' information on alias model. Aliases do not use global
configuration parameters anymore. Instead they are linked to an alias domain
e.g. 'sales' linked to 'mycompany.com' alias domain: 'sales@mycompany.com'.

It is now considered as a different alias compared to 'sales@mycompany.in'
which has the same alias_name but a different alias domain.

Constraints and checks are added, as

  * uniqueness of aliases is now checked inside a given domain;
  * an alias name must not clash with its domain bounce or catchall;
  * a combination of (alias_name, alias_domain_id) must be unique;

Crm multi-company environment is also updated to match the new alias domain
behavior.

Task-36879 (Mail: Support Multi Domains Aliases)

Part-of: odoo/odoo#76734
2023-10-24 19:24:50 +00:00

123 lines
6.4 KiB
XML

<?xml version="1.0"?>
<odoo>
<data>
<!-- Alias Form View -->
<record model="ir.ui.view" id="mail_alias_view_form">
<field name="name">mail.alias.view.form</field>
<field name="model">mail.alias</field>
<field name="arch" type="xml">
<form string="Alias">
<field name="alias_status" invisible="1"/>
<div invisible="alias_status != 'invalid'"
class="alert alert-danger text-center" role="alert">
The last message received on this alias has caused an error.
</div>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="open_document" string="Open Document"
type="object" class="oe_link" icon="fa-sitemap"
invisible="not alias_model_id or alias_force_thread_id == 0"/>
<button name="open_parent_document"
type="object" class="oe_link" icon="fa-sitemap"
invisible="not alias_parent_model_id or alias_parent_thread_id == 0">
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">Open Parent Document</span>
</div>
</button>
</div>
<div class="d-flex">
<h2 class="flex-grow-1">
<field name="alias_name" class="oe_inline"/>@
<field name="alias_domain_id" class="oe_inline" placeholder="e.g. domain.com"
options="{'no_create': True, 'no_open': True}"/>
</h2>
<field name="alias_status" widget="badge"
decoration-success="alias_status == 'valid'"
decoration-warning="alias_status == 'not_tested'"
decoration-danger="alias_status == 'invalid'"/>
</div>
<group>
<field name="alias_model_id"/>
<field name="alias_force_thread_id"/>
<field name="alias_defaults"/>
<field name="alias_contact"/>
<field name="alias_parent_model_id"/>
<field name="alias_parent_thread_id"/>
</group>
<label for="alias_bounced_content" invisible="alias_contact == 'everyone'"/>
<field name="alias_bounced_content" invisible="alias_contact == 'everyone'"/>
</sheet>
</form>
</field>
</record>
<!-- Alias List View -->
<record model="ir.ui.view" id="mail_alias_view_tree">
<field name="name">mail.alias.view.tree</field>
<field name="model">mail.alias</field>
<field name="arch" type="xml">
<tree string="Alias">
<field name="alias_name"/>
<field name="alias_domain_id"/>
<field name="alias_model_id"/>
<field name="alias_force_thread_id" optional="hide"/>
<field name="alias_parent_model_id"/>
<field name="alias_parent_thread_id" optional="hide"/>
<field name="alias_defaults" optional="hide"/>
<field name="alias_contact"/>
<field name="alias_status" widget="badge"
decoration-success="alias_status == 'valid'"
decoration-warning="alias_status == 'not_tested'"
decoration-danger="alias_status == 'invalid'"/>
<button name="open_document" type="object"
string="Open Document" icon="fa-sitemap"
invisible="not alias_model_id or alias_force_thread_id == 0"/>
<button name="open_parent_document" type="object"
string="Open Owner" icon="fa-sitemap"
invisible="not alias_parent_model_id or alias_parent_thread_id == 0"/>
</tree>
</field>
</record>
<!-- Alias Search View -->
<record model="ir.ui.view" id="mail_alias_view_search">
<field name="name">mail.alias.view.search</field>
<field name="model">mail.alias</field>
<field name="arch" type="xml">
<search string="Search Alias">
<field name="alias_name"/>
<field name="alias_domain_id"/>
<field name="alias_model_id"/>
<field name="create_uid"/>
<field name="alias_force_thread_id"/>
<field name="alias_parent_model_id"/>
<field name="alias_parent_thread_id"/>
<separator/>
<filter string="Active" name="active" domain="[('alias_name', '!=', False)]"/>
<group expand="0" string="Group By">
<filter string="Creator" name="groupby_create_uid"
context="{'group_by': 'create_uid'}"/>
<filter string="Alias Domain" name="groupby_alias_domain_id"
context="{'group_by': 'alias_domain_id'}"/>
<filter string="Document Model" name="groupby_alias_model_id"
context="{'group_by': 'alias_model_id'}"/>
<filter string="Container Model" name="groupby_alias_model_id"
context="{'group_by': 'alias_parent_model_id'}"/>
</group>
</search>
</field>
</record>
<record id="mail_alias_action" model="ir.actions.act_window">
<field name="name">Aliases</field>
<field name="res_model">mail.alias</field>
<field name="context">{
'search_default_active': True,
}
</field>
</record>
</data>
</odoo>