Mail Tests

test_mail
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/test_mail
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Thibault Delavallée, Denis Ledoux, Xavier Morel, Stefan Rijnhart, Jeremy Kersten, Lucas Perais (lpe), Damien Bouvy, Pierre Masereel, Christophe Monniez, Alexandre Kühn, Julien Castiaux, Sébastien Theys, Julien Mougenot, std-odoo, Prakash Prajapati, Rémy Voet (ryv), Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, William Braeckman, Romain Estievenart, Miquel Raïch, william-andre, Didier (did), Ruben Gomes, luvi, Renaud Thiry, Julien Banken, Iván Todorovich, bve-odoo, tsm-odoo, Victor Piryns (pivi), Gauthier Wala (gawa), Pierre-Yves Dufays, Bruno Boi, Mayurrajsinh Rathod, Leloup Loïc (lole), Adrien Schoffeniels, Xavier Bol (xbo), Andrzej(pian), Zelong Lin, sesn-odoo, BHanq, Hesham, Youssef Bashandy, Maryam Kia, jorv-odoo, Bastien Fafchamps (bafa), adsh-odoo, Tanguy Quéguineur, TSO, Alex Kühn, Mathieu Coutant, guce, yagp-odoo, sabr, Hesham Saleh, Michaël Mattiello, Bastien PIERRE, zel-odoo, pish-odoo, Thomas Josse (THJO), Krzysztof Magusiak (krma), Mahdi Alijani (malj), Ajit Singh, pajo, defl, mojem, jayp-odoo, romc-odoo, Tudor-Calin Panzaru (tupan), Jérôme Belpaire, Kevin Gerard (kege), alan-odoo, Jason (jaca), Farah (ahmfa), karygauss03, Mohamed Ayman, mear-odoo, Haja Ram
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - test_orm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains tests related to mail. Those are
present in a separate module as it contains models used only to perform
tests independently to functional aspects of other models. 

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
mail_template_simple_test mail_template_simple_test ir.ui.view qweb New
mail_test_ticket_test_template mail_test_ticket_test_template ir.ui.view qweb New
mail_test_ticket_test_template_2 mail_test_ticket_test_template_2 ir.ui.view qweb New
mail_test_ticket_test_variable_template mail_test_ticket_test_variable_template ir.ui.view qweb New
mail_test_ticket_tracking_view mail_test_ticket_tracking_view ir.ui.view qweb New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (47)

New fields (5)
  • name Char
  • partner_id Many2one → res.partner
    string='Customer' args: 'res.partner'
  • track Char
    default='test' tracking=True
  • value Integer
  • value_pc Float
    compute='_value_pc' store=True
Public methods (0)

No public methods.

New fields (5)
  • email_from Char
    args: 'Email From'
  • name Char
  • partner_id Many2one → res.partner
    string='Customer' args: 'res.partner'
  • user_id Many2one → res.users
    tracking=1 args: 'res.users', 'Responsible'
  • value Integer
Public methods (0)

No public methods.

New fields (4)
  • field_0 Char
    tracking=True
  • field_1 Char
    tracking=True
  • field_2 Char
    tracking=True
  • name Char
    required=True tracking=True
Public methods (0)

No public methods.

New fields (5)
  • access Selection
    default='public' name='Access' args: [('public', 'public'), ('logged', 'Logged'), ('logged_ro', 'Logged readonly for portal'), ('followers', 'Followers'), ('internal', 'Internal'), ('internal_ro', 'Internal readonly'), ('admin', 'Admin')]
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
  • phone Char
Public methods (0)

No public methods.

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • is_locked Boolean
  • is_readonly Boolean
  • name Char
  • phone Char
Public methods (0)

No public methods.

New fields (5)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email Char
    args: 'Email'
  • is_locked Boolean
  • mobile Char
    args: 'Mobile'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (5)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    args: 'res.company'
  • date Date
  • email_from Char
  • name Char
Public methods (2)
  • action_close(self, action_feedback, attachment_ids=None)
  • action_start(self, action_summary)

New fields (3)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • author_id Many2one → res.partner
    args: 'res.partner'
  • description Html
    render_engine='qweb' render_options={'post_process': True} sanitize='email_outgoing' args: 'Description'
  • name Char
    args: 'Name'
  • source_ids Many2many → mail.test.composer.source
    string='Invite source' args: 'mail.test.composer.source'
Public methods (0)

No public methods.

New fields (3)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Main customer'
  • email_from Char
    compute='_compute_email_from' readonly=False store=True args: 'Email'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (3)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • description Text
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
Public methods (0)

No public methods.

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
  • name Char
  • type Selection
    args: [('first', 'First'), ('second', 'Second')]
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (4)
  • custom_field Char
  • email_from Char
  • name Char
  • user_id Many2one → res.users
    args: 'res.users', 'Responsible'
Public methods (1)
  • message_new(self, msg_dict, custom_values=None)
    @api.model

New fields (1)
  • company_id Many2one → res.company
    args: 'res.company', 'Company'
Public methods (0)

No public methods.

New fields (4)
  • custom_field Char
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • company_id Many2one → res.company
    args: 'res.company', 'Company'
Public methods (0)

No public methods.

New fields (4)
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • email_from Char
  • lang Char
    args: 'Lang'
  • name Char
Public methods (0)

No public methods.

New fields (8)
  • company_id Many2one → res.company
    args: 'res.company'
  • customer_name Char
  • email_from Char
  • lang_code Char
  • name Char
  • partner_id Many2one → res.partner
    tracking=2 args: 'res.partner'
  • phone Char
  • user_id Many2one → res.users
    tracking=1 args: 'res.users'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    args: 'res.company'
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • definition_properties PropertiesDefinition
    args: 'Definitions'
  • name Char
    args: 'Name'
  • parent_id Many2one → mail.test.properties
    string='Parent' args: 'mail.test.properties'
  • properties Properties
    definition='parent_id.definition_properties' args: 'Properties'
Public methods (0)

No public methods.

New fields (6)
  • company_id Many2one → res.company
    args: 'res.company'
  • contact_ids Many2many → res.partner
    args: 'res.partner'
  • customer_email Char
    compute='_compute_customer_email' readonly=False store=True args: 'Customer Email'
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • customer_phone Char
    compute='_compute_customer_phone' readonly=False store=True args: 'Customer Phone'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • date_last_stage_update Datetime
    compute='_compute_date_last_stage_update' index=True readonly=True store=True args: 'Last Stage Update'
  • done Boolean
    default=False
  • name Char
  • stage_id Many2one → mail.test.rotting.stage
    args: 'mail.test.rotting.stage', 'Stage'
Public methods (0)

No public methods.

New fields (3)
  • name Char
  • no_rot Boolean
    default=False
  • rotting_threshold_days Integer
    default=3
Public methods (0)

No public methods.

New fields (2)
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    args: 'res.company'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • description Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (9)
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • count Integer
    default=1
  • customer_id Many2one → res.partner
    tracking=2 args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
    tracking=True
  • mail_template Many2one → mail.template
    args: 'mail.template', 'Template'
  • name Char
  • phone_number Char
  • user_id Many2one → res.users
    tracking=1 args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (1)
  • email_from Char
    compute='_compute_email_from' readonly=False store=True args: 'Email'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
  • container_id Many2one → mail.test.container.mc
    tracking=True args: 'mail.test.container.mc'
Public methods (0)

No public methods.

New fields (2)
  • state Selection
    default='open' tracking=10 args: [('new', 'New'), ('open', 'Open'), ('close', 'Close')]
  • state_template_id Many2one → mail.template
    args: 'mail.template'
Public methods (0)

No public methods.

New fields (8)
  • company_id Many2one → res.company
    args: 'res.company'
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • email_from Char
  • name Char
  • parent_id Many2one → mail.test.track
    string='Parent' args: 'mail.test.track'
  • track_enable_default_log Boolean
    default=False
  • track_fields_tofilter Char
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (19)
  • boolean_field Boolean
    tracking=1 args: 'Boolean'
  • char_field Char
    tracking=2 args: 'Char'
  • company_id Many2one → res.company
    args: 'res.company'
  • currency_id Many2one → res.currency
    related='company_id.currency_id' args: 'res.currency'
  • date_field Date
    tracking=3 args: 'Date'
  • datetime_field Datetime
    tracking=4 args: 'Datetime'
  • float_field Float
    tracking=5 args: 'Float'
  • float_field_with_digits Float
    digits=(10, 8) tracking=5 args: 'Precise Float'
  • html_field Html
    tracking=False args: 'Html'
  • integer_field Integer
    tracking=7 args: 'Integer'
  • many2many_field Many2many → mail.test.track.all.m2m
    string='Many2Many' tracking=8 args: 'mail.test.track.all.m2m'
  • many2one_field_id Many2one → res.partner
    string='Many2one' tracking=9 args: 'res.partner'
  • monetary_field Monetary
    tracking=10 args: 'Monetary'
  • name Char
    args: 'Name'
  • one2many_field One2many → mail.test.track.all.o2m
    string='One2Many' tracking=11 args: 'mail.test.track.all.o2m', 'mail_track_all_id'
  • properties Properties
    definition='properties_parent_id.definition_properties' args: 'Properties'
  • properties_parent_id Many2one → mail.test.track.all.properties.parent
    tracking=True args: 'mail.test.track.all.properties.parent'
  • selection_field Selection
    selection=[('first', 'FIRST'), ('second', 'SECOND')] string='Selection' tracking=12
  • text_field Text
    tracking=13 args: 'Text'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (2)
  • mail_track_all_id Many2one → mail.test.track.all
    args: 'mail.test.track.all'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (1)
  • definition_properties PropertiesDefinition
Public methods (0)

No public methods.

New fields (4)
  • partner_email Char
    related='partner_id.email' store=True tracking=True
  • partner_id Many2one → res.partner
    tracking=True args: 'res.partner'
  • partner_name Char
    related='partner_id.name' store=True tracking=True
  • partner_phone Char
    related='partner_id.phone' tracking=True
Public methods (0)

No public methods.

New fields (2)
  • customer_id Many2one → res.partner
    tracking=True args: 'res.partner', 'Customer'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • name Char
    tracking=1
  • partner_id Many2one → res.partner
    groups='base.group_user' tracking=2 args: 'res.partner'
  • secret Char
    groups='base.group_user' tracking=3
Public methods (0)

No public methods.

New fields (3)
  • company_currency Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' tracking=True args: 'res.currency'
  • company_id Many2one → res.company
    args: 'res.company'
  • revenue Monetary
    currency_field='company_currency' tracking=True args: 'Revenue'
Public methods (0)

No public methods.

New fields (2)
  • name Char
  • selection_type Selection
    tracking=True args: [('first', 'First'), ('second', 'Second')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/test_mail
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Thibault Delavallée, Christophe Simonis, Xavier Morel, Stefan Rijnhart, Aaron Bohy, Damien Bouvy, Yannick Tivisse, Christophe Monniez, Jorge Pinna Puissant, Lucas Perais, Alexandre Kühn, Julien Castiaux, Xavier-Do, Sébastien Theys, Julien Mougenot, Prakash Prajapati, Rémy Voet (ryv), Gorash, fja-odoo, Pierre Paridans, Romain Estievenart, Didier (did), aliya, Florian Charlier, Hubert Van De Walle, Achraf, Renaud Thiry, Julien Banken, bve-odoo, tsm-odoo, Victor Piryns (pivi), miad-odoo, Gauthier Wala (gawa), Pierre-Yves Dufays, Claire Bretton (clbr), Maruan Aguerdouh (magm), Mayurrajsinh Rathod, Rahul Prajapati, Leloup Loïc (lole), Adrien Schoffeniels, Noe Antoine, Andrzej(pian), Joris Makauskis, sesn-odoo, maad-odoo, BHanq, Hesham, Mattis Megevand, Youssef Bashandy, Mathieu (mcou), Maryam Kia, jorv-odoo, Carlos Roca, Bastien Fafchamps (bafa), kcv-odoo, Tanguy Quéguineur, Martin Trigaux (mat), Shubham Thanki, Mathieu Coutant, sabr, Hesham Saleh, Khushi, Bastien PIERRE, zel-odoo, pish-odoo, Krzysztof Magusiak (krma), Mahdi Alijani (malj), Ajit Singh, Christopher Rogos, defl, jayp-odoo, bsra-odoo, Tudor-Calin Panzaru (tupan), saurabh, Tina, Kadam Darji, Jason (jaca)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - test_performance
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains tests related to mail. Those are
present in a separate module as it contains models used only to perform
tests independently to functional aspects of other models. 

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
mail_template_simple_test mail_template_simple_test ir.ui.view qweb New
mail_test_ticket_test_template mail_test_ticket_test_template ir.ui.view qweb New
mail_test_ticket_test_template_2 mail_test_ticket_test_template_2 ir.ui.view qweb New
mail_test_ticket_test_variable_template mail_test_ticket_test_variable_template ir.ui.view qweb New
mail_test_ticket_tracking_view mail_test_ticket_tracking_view ir.ui.view qweb New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (40)

New fields (5)
  • name Char
  • partner_id Many2one → res.partner
    string='Customer' args: 'res.partner'
  • track Char
    default='test' tracking=True
  • value Integer
  • value_pc Float
    compute='_value_pc' store=True
Public methods (0)

No public methods.

New fields (4)
  • field_0 Char
    tracking=True
  • field_1 Char
    tracking=True
  • field_2 Char
    tracking=True
  • name Char
    required=True tracking=True
Public methods (0)

No public methods.

New fields (5)
  • access Selection
    default='public' name='Access' args: [('public', 'public'), ('logged', 'Logged'), ('logged_ro', 'Logged readonly for portal'), ('followers', 'Followers'), ('internal', 'Internal'), ('internal_ro', 'Internal readonly'), ('admin', 'Admin')]
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
  • phone Char
Public methods (0)

No public methods.

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • is_locked Boolean
  • is_readonly Boolean
  • name Char
  • phone Char
Public methods (0)

No public methods.

New fields (5)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    args: 'res.company'
  • date Date
  • email_from Char
  • name Char
Public methods (2)
  • action_close(self, action_feedback, attachment_ids=None)
  • action_start(self, action_summary)

New fields (3)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • author_id Many2one → res.partner
    args: 'res.partner'
  • description Html
    render_engine='qweb' render_options={'post_process': True} sanitize='email_outgoing' args: 'Description'
  • name Char
    args: 'Name'
  • source_ids Many2many → mail.test.composer.source
    string='Invite source' args: 'mail.test.composer.source'
Public methods (0)

No public methods.

New fields (3)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Main customer'
  • email_from Char
    compute='_compute_email_from' readonly=False store=True args: 'Email'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (3)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • description Text
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
Public methods (0)

No public methods.

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
  • name Char
  • type Selection
    args: [('first', 'First'), ('second', 'Second')]
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (3)
  • custom_field Char
  • email_from Char
  • name Char
Public methods (1)
  • message_new(self, msg_dict, custom_values=None)
    @api.model
    Check override of 'message_new' allowing to update record values base on incoming email.

New fields (1)
  • company_id Many2one → res.company
    args: 'res.company', 'Company'
Public methods (0)

No public methods.

New fields (4)
  • custom_field Char
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • company_id Many2one → res.company
    args: 'res.company', 'Company'
Public methods (0)

No public methods.

New fields (4)
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • email_from Char
  • lang Char
    args: 'Lang'
  • name Char
Public methods (0)

No public methods.

New fields (9)
  • company_id Many2one → res.company
    args: 'res.company'
  • customer_name Char
  • email_from Char
  • lang_code Char
  • mobile Char
  • name Char
  • partner_id Many2one → res.partner
    tracking=2 args: 'res.partner'
  • phone Char
  • user_id Many2one → res.users
    tracking=1 args: 'res.users'
Public methods (0)

No public methods.

New fields (2)
  • customer_id Many2one → res.partner
    tracking=True args: 'res.partner', 'Customer'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    args: 'res.company'
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • definition_properties PropertiesDefinition
    args: 'Definitions'
  • name Char
    args: 'Name'
  • parent_id Many2one → mail.test.properties
    string='Parent' args: 'mail.test.properties'
  • properties Properties
    definition='parent_id.definition_properties' args: 'Properties'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (2)
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    args: 'res.company'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • description Char
Public methods (0)

No public methods.

New fields (10)
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • count Integer
    default=1
  • customer_id Many2one → res.partner
    tracking=2 args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
    tracking=True
  • mail_template Many2one → mail.template
    args: 'mail.template', 'Template'
  • mobile_number Char
  • name Char
  • phone_number Char
  • user_id Many2one → res.users
    tracking=1 args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (1)
  • email_from Char
    compute='_compute_email_from' readonly=False store=True args: 'Email'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
  • container_id Many2one → mail.test.container.mc
    tracking=True args: 'mail.test.container.mc'
Public methods (0)

No public methods.

New fields (7)
  • company_id Many2one → res.company
    args: 'res.company'
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • email_from Char
  • name Char
  • track_enable_default_log Boolean
    default=False
  • track_fields_tofilter Char
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (17)
  • boolean_field Boolean
    tracking=1 args: 'Boolean'
  • char_field Char
    tracking=2 args: 'Char'
  • company_id Many2one → res.company
    args: 'res.company'
  • currency_id Many2one → res.currency
    related='company_id.currency_id' args: 'res.currency'
  • date_field Date
    tracking=3 args: 'Date'
  • datetime_field Datetime
    tracking=4 args: 'Datetime'
  • float_field Float
    tracking=5 args: 'Float'
  • float_field_with_digits Float
    digits=(10, 8) tracking=5 args: 'Precise Float'
  • html_field Html
    tracking=False args: 'Html'
  • integer_field Integer
    tracking=7 args: 'Integer'
  • many2many_field Many2many → mail.test.track.all.m2m
    string='Many2Many' tracking=8 args: 'mail.test.track.all.m2m'
  • many2one_field_id Many2one → res.partner
    string='Many2one' tracking=9 args: 'res.partner'
  • monetary_field Monetary
    tracking=10 args: 'Monetary'
  • name Char
    args: 'Name'
  • one2many_field One2many → mail.test.track.all.o2m
    string='One2Many' tracking=11 args: 'mail.test.track.all.o2m', 'mail_track_all_id'
  • selection_field Selection
    selection=[('first', 'FIRST'), ('second', 'SECOND')] string='Selection' tracking=12
  • text_field Text
    tracking=13 args: 'Text'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (2)
  • mail_track_all_id Many2one → mail.test.track.all
    args: 'mail.test.track.all'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (4)
  • partner_email Char
    related='partner_id.email' store=True tracking=True
  • partner_id Many2one → res.partner
    tracking=True args: 'res.partner'
  • partner_name Char
    related='partner_id.name' store=True tracking=True
  • partner_phone Char
    related='partner_id.phone' tracking=True
Public methods (0)

No public methods.

New fields (3)
  • name Char
    tracking=1
  • partner_id Many2one → res.partner
    groups='base.group_user' tracking=2 args: 'res.partner'
  • secret Char
    groups='base.group_user' tracking=3
Public methods (0)

No public methods.

New fields (3)
  • company_currency Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' tracking=True args: 'res.currency'
  • company_id Many2one → res.company
    args: 'res.company'
  • revenue Monetary
    currency_field='company_currency' tracking=True args: 'Revenue'
Public methods (0)

No public methods.

New fields (2)
  • name Char
  • selection_type Selection
    tracking=True args: [('first', 'First'), ('second', 'Second')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/test_mail
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Xavier ALT, Christophe Simonis, Xavier Morel, Stefan Rijnhart, Aaron Bohy, Damien Bouvy, Yannick Tivisse, Christophe Monniez, Jorge Pinna Puissant, Lucas Perais, Alexandre Kühn, Julien Castiaux, Xavier-Do, Romeo Fragomeli, Sébastien Theys, Julien Mougenot, std-odoo, Achraf (abz), Ivan Yelizariev, Nasreddin Boulif (bon), Prakash Prajapati, Rémy Voet (ryv), fja-odoo, Pierre Paridans, Romain Estievenart, Julien Van Roy, Didier (did), aliya, Louis Baudoux, Walid HANNICHE (waha), Yolann Sabaux, luvi, Renaud Thiry, Ipsita Borisagar, nda-odoo, bve-odoo, David, Victor Piryns (pivi), miad-odoo, Gauthier Wala (gawa), Pierre-Yves Dufays, Daniel Kosky (dako), Maruan Aguerdouh (magm), FrancoisGe, Michael (mcm), Chong Wang (cwg), Leloup Loïc (lole), Xavier Bol (xbo), Adrien Guilliams (adgu), Noe Antoine, Andrzej(pian), sesn-odoo, maad-odoo, BHanq, dane@odoo.com, Mattis Megevand, Youssef Bashandy, Mathieu (mcou), Maryam Kia, jorv-odoo, Julien Carion (juca), kcv-odoo, Khushi, Pierre Pulinckx (pipu), fdardenne, Bastien PIERRE, defl, jayp-odoo, bsra-odoo, Tudor-Calin Panzaru (tupan)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - test_performance
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains tests related to mail. Those are
present in a separate module as it contains models used only to perform
tests independently to functional aspects of other models. 

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
mail_template_simple_test mail_template_simple_test ir.ui.view qweb New
mail_test_ticket_test_template mail_test_ticket_test_template ir.ui.view qweb New
mail_test_ticket_test_template_2 mail_test_ticket_test_template_2 ir.ui.view qweb New
mail_test_ticket_test_variable_template mail_test_ticket_test_variable_template ir.ui.view qweb New
mail_test_ticket_tracking_view mail_test_ticket_tracking_view ir.ui.view qweb New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (36)

New fields (5)
  • name Char
  • partner_id Many2one → res.partner
    string='Customer' args: 'res.partner'
  • track Char
    default='test' tracking=True
  • value Integer
  • value_pc Float
    compute='_value_pc' store=True
Public methods (0)

No public methods.

New fields (4)
  • field_0 Char
    tracking=True
  • field_1 Char
    tracking=True
  • field_2 Char
    tracking=True
  • name Char
    required=True tracking=True
Public methods (0)

No public methods.

New fields (5)
  • access Selection
    default='public' name='Access' args: [('public', 'public'), ('logged', 'Logged'), ('logged_ro', 'Logged readonly for portal'), ('followers', 'Followers'), ('internal', 'Internal'), ('internal_ro', 'Internal readonly'), ('admin', 'Admin')]
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
  • phone Char
Public methods (0)

No public methods.

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • is_locked Boolean
  • is_readonly Boolean
  • name Char
  • phone Char
Public methods (0)

No public methods.

New fields (5)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    args: 'res.company'
  • date Date
  • email_from Char
  • name Char
Public methods (2)
  • action_close(self, action_feedback, attachment_ids=None)
  • action_start(self, action_summary)

New fields (3)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • author_id Many2one → res.partner
    args: 'res.partner'
  • description Html
    render_engine='qweb' render_options={'post_process': True} sanitize=False args: 'Description'
  • name Char
    args: 'Name'
  • source_ids Many2many → mail.test.composer.source
    string='Invite source' args: 'mail.test.composer.source'
Public methods (0)

No public methods.

New fields (3)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Main customer'
  • email_from Char
    compute='_compute_email_from' readonly=False store=True args: 'Email'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (3)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • description Text
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
Public methods (0)

No public methods.

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
  • name Char
  • type Selection
    args: [('first', 'First'), ('second', 'Second')]
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (3)
  • custom_field Char
  • email_from Char
  • name Char
Public methods (1)
  • message_new(self, msg_dict, custom_values=None)
    @api.model
    Check override of 'message_new' allowing to update record values base on incoming email.

New fields (1)
  • company_id Many2one → res.company
    args: 'res.company', 'Company'
Public methods (0)

No public methods.

New fields (4)
  • custom_field Char
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • email_from Char
  • lang Char
    args: 'Lang'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • customer_id Many2one → res.partner
    tracking=True args: 'res.partner', 'Customer'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    args: 'res.company'
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • definition_properties PropertiesDefinition
    args: 'Definitions'
  • name Char
    args: 'Name'
  • parent_id Many2one → mail.test.properties
    string='Parent' args: 'mail.test.properties'
  • properties Properties
    definition='parent_id.definition_properties' args: 'Properties'
Public methods (0)

No public methods.

New fields (2)
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    args: 'res.company'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (10)
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • count Integer
    default=1
  • customer_id Many2one → res.partner
    tracking=2 args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
    tracking=True
  • mail_template Many2one → mail.template
    args: 'mail.template', 'Template'
  • mobile_number Char
  • name Char
  • phone_number Char
  • user_id Many2one → res.users
    tracking=1 args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (1)
  • email_from Char
    compute='_compute_email_from' readonly=False store=True args: 'Email'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
  • container_id Many2one → mail.test.container.mc
    tracking=True args: 'mail.test.container.mc'
Public methods (0)

No public methods.

New fields (7)
  • company_id Many2one → res.company
    args: 'res.company'
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • email_from Char
  • name Char
  • track_enable_default_log Boolean
    default=False
  • track_fields_tofilter Char
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (17)
  • boolean_field Boolean
    tracking=1 args: 'Boolean'
  • char_field Char
    tracking=2 args: 'Char'
  • company_id Many2one → res.company
    args: 'res.company'
  • currency_id Many2one → res.currency
    related='company_id.currency_id' args: 'res.currency'
  • date_field Date
    tracking=3 args: 'Date'
  • datetime_field Datetime
    tracking=4 args: 'Datetime'
  • float_field Float
    tracking=5 args: 'Float'
  • float_field_with_digits Float
    digits=(10, 8) tracking=5 args: 'Precise Float'
  • html_field Html
    tracking=False args: 'Html'
  • integer_field Integer
    tracking=7 args: 'Integer'
  • many2many_field Many2many → mail.test.track.all.m2m
    string='Many2Many' tracking=8 args: 'mail.test.track.all.m2m'
  • many2one_field_id Many2one → res.partner
    string='Many2one' tracking=9 args: 'res.partner'
  • monetary_field Monetary
    tracking=10 args: 'Monetary'
  • name Char
    args: 'Name'
  • one2many_field One2many → mail.test.track.all.o2m
    string='One2Many' tracking=11 args: 'mail.test.track.all.o2m', 'mail_track_all_id'
  • selection_field Selection
    selection=[('first', 'FIRST'), ('second', 'SECOND')] string='Selection' tracking=12
  • text_field Text
    tracking=13 args: 'Text'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (2)
  • mail_track_all_id Many2one → mail.test.track.all
    args: 'mail.test.track.all'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (4)
  • partner_email Char
    related='partner_id.email' store=True tracking=True
  • partner_id Many2one → res.partner
    tracking=True args: 'res.partner'
  • partner_name Char
    related='partner_id.name' store=True tracking=True
  • partner_phone Char
    related='partner_id.phone' tracking=True
Public methods (0)

No public methods.

New fields (3)
  • name Char
    tracking=1
  • partner_id Many2one → res.partner
    groups='base.group_user' tracking=2 args: 'res.partner'
  • secret Char
    groups='base.group_user' tracking=3
Public methods (0)

No public methods.

New fields (3)
  • company_currency Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' tracking=True args: 'res.currency'
  • company_id Many2one → res.company
    args: 'res.company'
  • revenue Monetary
    currency_field='company_currency' tracking=True args: 'Revenue'
Public methods (0)

No public methods.

New fields (2)
  • name Char
  • selection_type Selection
    tracking=True args: [('first', 'First'), ('second', 'Second')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/test_mail
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Xavier ALT, Christophe Simonis, Xavier Morel, Géry Debongnie, Aaron Bohy, Barad Mahendra, Yannick Tivisse, Alexandre Kühn, Julien Castiaux, Xavier-Do, Romeo Fragomeli, Victor Feyens, Sébastien Theys, Anh Thao Pham (pta), std-odoo, David Beguin, Ivan Yelizariev, Nasreddin Boulif (bon), Rémy Voet (ryv), Pierre Paridans, Romain Estievenart, roen-odoo, Julien Van Roy, thcl-odoo, mafo-odoo, Didier (did), Krzysztof Magusiak, Audric Onockx (auon), Florian Charlier, Patrick Hoste, Walid HANNICHE (waha), Yolann Sabaux, Fabio Barbero, Renaud Thiry, nda-odoo, bve-odoo, Habib (ayh), Thomas Lefebvre (thle), Louis Wicket (wil), tsm-odoo, David, miad-odoo, Gauthier Wala (gawa), Pierre-Yves Dufays, Maruan Aguerdouh (magm), Chong Wang (cwg), Leloup Loïc (lole), Brieuc-brd, Andrzej(pian), Zelong Lin, Astik Singh, dane@odoo.com, Mattis Megevand, jorv-odoo, Claire (clbr), sabr
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - test_performance
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains tests related to mail. Those are
present in a separate module as it contains models used only to perform
tests independently to functional aspects of other models. 

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
mail_template_simple_test mail_template_simple_test ir.ui.view qweb New
mail_test_ticket_test_template mail_test_ticket_test_template ir.ui.view qweb New
mail_test_ticket_tracking_view mail_test_ticket_tracking_view ir.ui.view qweb New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (27)

New fields (5)
  • name Char
  • partner_id Many2one → res.partner
    string='Customer' args: 'res.partner'
  • track Char
    default='test' tracking=True
  • value Integer
  • value_pc Float
    compute='_value_pc' store=True
Public methods (0)

No public methods.

New fields (4)
  • field_0 Char
    tracking=True
  • field_1 Char
    tracking=True
  • field_2 Char
    tracking=True
  • name Char
    required=True tracking=True
Public methods (0)

No public methods.

New fields (5)
  • access Selection
    default='public' name='Access' args: [('public', 'public'), ('logged', 'Logged'), ('logged_ro', 'Logged readonly for portal'), ('followers', 'Followers'), ('internal', 'Internal'), ('internal_ro', 'Internal readonly'), ('admin', 'Admin')]
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
  • phone Char
Public methods (0)

No public methods.

New fields (5)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • is_locked Boolean
  • name Char
  • phone Char
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=True
  • date Date
  • email_from Char
  • name Char
Public methods (2)
  • action_close(self, action_feedback, attachment_ids=None)
  • action_start(self, action_summary)

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • author_id Many2one → res.partner
    args: 'res.partner'
  • description Html
    render_engine='qweb' render_options={'post_process': True} sanitize=False args: 'Description'
  • name Char
    args: 'Name'
  • source_ids Many2many → mail.test.composer.source
    string='Invite source' args: 'mail.test.composer.source'
Public methods (0)

No public methods.

New fields (3)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Main customer'
  • email_from Char
    compute='_compute_email_from' readonly=False store=True args: 'Email'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (4)
  • alias_id Many2one → mail.alias
    delegate=True args: 'mail.alias', 'Alias'
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • description Text
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
Public methods (0)

No public methods.

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
  • name Char
  • type Selection
    args: [('first', 'First'), ('second', 'Second')]
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (3)
  • custom_field Char
  • email_from Char
  • name Char
Public methods (1)
  • message_new(self, msg_dict, custom_values=None)
    @api.model
    Check override of 'message_new' allowing to update record values base on incoming email.

New fields (4)
  • custom_field Char
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • email_from Char
  • lang Char
    args: 'Lang'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    args: 'res.company'
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (8)
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • count Integer
    default=1
  • customer_id Many2one → res.partner
    tracking=2 args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
    tracking=True
  • mail_template Many2one → mail.template
    args: 'mail.template', 'Template'
  • name Char
  • user_id Many2one → res.users
    tracking=1 args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (1)
  • email_from Char
    compute='_compute_email_from' readonly=False store=True args: 'Email'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
  • container_id Many2one → mail.test.container.mc
    tracking=True args: 'mail.test.container.mc'
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    args: 'res.company'
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • email_from Char
  • name Char
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (13)
  • boolean_field Boolean
    tracking=True args: 'Boolean'
  • char_field Char
    tracking=True args: 'Char'
  • company_id Many2one → res.company
    args: 'res.company'
  • currency_id Many2one → res.currency
    related='company_id.currency_id' args: 'res.currency'
  • date_field Date
    tracking=True args: 'Date'
  • datetime_field Datetime
    tracking=True args: 'Datetime'
  • float_field Float
    tracking=True args: 'Float'
  • html_field Html
    tracking=True args: 'Html'
  • integer_field Integer
    tracking=True args: 'Integer'
  • many2one_field_id Many2one → res.partner
    string='Many2one' tracking=True args: 'res.partner'
  • monetary_field Monetary
    tracking=True args: 'Monetary'
  • selection_field Selection
    selection=[['first', 'FIRST']] string='Selection' tracking=True
  • text_field Text
    tracking=True args: 'Text'
Public methods (0)

No public methods.

New fields (4)
  • partner_email Char
    related='partner_id.email' store=True tracking=True
  • partner_id Many2one → res.partner
    tracking=True args: 'res.partner'
  • partner_name Char
    related='partner_id.name' store=True tracking=True
  • partner_phone Char
    related='partner_id.phone' tracking=True
Public methods (0)

No public methods.

New fields (3)
  • company_currency Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' tracking=True args: 'res.currency'
  • company_id Many2one → res.company
    args: 'res.company'
  • revenue Monetary
    currency_field='company_currency' tracking=True args: 'Revenue'
Public methods (0)

No public methods.

New fields (2)
  • name Char
  • selection_type Selection
    tracking=True args: [('first', 'First'), ('second', 'Second')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/test_mail
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Olivier Dony, Thibault Delavallée, Xavier ALT, Christophe Simonis, Xavier Morel, Yannick Tivisse, Alexandre Kühn, Julien Castiaux, Aurélien Warnon, Xavier-Do, Xavier Dubuc, Sébastien Theys, Anh Thao Pham (pta), std-odoo, Achraf (abz), David Beguin, Ivan Yelizariev, Jérémy Hennecart, Nasreddin Boulif (bon), nie, Rémy Voet (ryv), Hiral Bhavsar, roen-odoo, Julien Van Roy, Florian Damhaut, thcl-odoo, mafo-odoo, Didier (did), Audric Onockx (auon), anhe-odoo, Walid HANNICHE (waha), Yolann Sabaux, Nicolas Bayet, dht-odoo, Renaud Thiry, bve-odoo, Habib (ayh), David, miad-odoo, Pierre-Yves Dufays, Maruan Aguerdouh (magm), Leloup Loïc (lole), Andrzej(pian), dane@odoo.com, Mattis Megevand, jorv-odoo, Armin, Thibault Delavalée
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - test_performance
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains tests related to mail. Those are
present in a separate module as it contains models used only to perform
tests independently to functional aspects of other models. 

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
mail_template_simple_test mail_template_simple_test ir.ui.view qweb New
mail_test_ticket_test_template mail_test_ticket_test_template ir.ui.view qweb New
mail_test_ticket_tracking_view mail_test_ticket_tracking_view ir.ui.view qweb New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (19)

New fields (5)
  • name Char
  • partner_id Many2one → res.partner
    string='Customer' args: 'res.partner'
  • track Char
    default='test' tracking=True
  • value Integer
  • value_pc Float
    compute='_value_pc' store=True
Public methods (0)

No public methods.

New fields (4)
  • field_0 Char
    tracking=True
  • field_1 Char
    tracking=True
  • field_2 Char
    tracking=True
  • name Char
    required=True tracking=True
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=True
  • date Date
  • email_from Char
  • name Char
Public methods (2)
  • action_close(self, action_feedback)
  • action_start(self, action_summary)

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • author_id Many2one → res.partner
    args: 'res.partner'
  • description Html
    render_engine='qweb' render_options={'post_process': True} sanitize=False args: 'Description'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (4)
  • alias_id Many2one → mail.alias
    delegate=True args: 'mail.alias', 'Alias'
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • description Text
  • name Char
Public methods (0)

No public methods.

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
  • name Char
  • type Selection
    args: [('first', 'First'), ('second', 'Second')]
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (3)
  • custom_field Char
  • email_from Char
  • name Char
Public methods (1)
  • message_new(self, msg_dict, custom_values=None)
    @api.model
    Check override of 'message_new' allowing to update record values base on incoming email.

New fields (4)
  • custom_field Char
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • email_from Char
  • lang Char
    args: 'Lang'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    args: 'res.company'
  • customer_id Many2one → res.partner
    args: 'res.partner'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (8)
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • count Integer
    default=1
  • customer_id Many2one → res.partner
    tracking=2 args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
    tracking=True
  • mail_template Many2one → mail.template
    args: 'mail.template', 'Template'
  • name Char
  • user_id Many2one → res.users
    tracking=1 args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    args: 'res.company'
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • email_from Char
  • name Char
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (4)
  • partner_email Char
    related='partner_id.email' store=True tracking=True
  • partner_id Many2one → res.partner
    tracking=True args: 'res.partner'
  • partner_name Char
    related='partner_id.name' store=True tracking=True
  • partner_phone Char
    related='partner_id.phone' tracking=True
Public methods (0)

No public methods.

New fields (3)
  • company_currency Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Currency' tracking=True args: 'res.currency'
  • company_id Many2one → res.company
    args: 'res.company'
  • revenue Monetary
    currency_field='company_currency' tracking=True args: 'Revenue'
Public methods (0)

No public methods.

New fields (2)
  • name Char
  • type Selection
    tracking=True args: [('first', 'First'), ('second', 'Second')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/test_mail
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Thibault Delavallée, Xavier ALT, Christophe Simonis, Xavier Morel, Thibault Francois, Yannick Tivisse, Dharmraj Jhala, Christophe Monniez, Jorge Pinna Puissant, Alexandre Kühn, Julien Castiaux, Aurélien Warnon, Priyanka Kakadiya, Xavier-Do, jvm-odoo, Victor Feyens, Andrea Grazioso (agr-odoo), Xavier Dubuc, Sébastien Theys, fw-bot, Anh Thao Pham (pta), Debauche Stéphane, std-odoo, Achraf (abz), Lucas Lefèvre, Ivan Yelizariev, Nasreddin Boulif (bon), nie, Kevin Baptiste, roen-odoo, Julien Van Roy, Florian Damhaut, thcl-odoo, Didier (did), jpr-odoo, anhe-odoo, Walid HANNICHE (waha), bve-odoo, Pierre-Yves Dufays, dmonzonis, Qiuyu (QHO)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:28
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - test_performance
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains tests related to mail. Those are
present in a separate module as it contains models used only to perform
tests independently to functional aspects of other models. 

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
mail_test_ticket_test_template mail_test_ticket_test_template ir.ui.view qweb New
mail_test_ticket_tracking_view mail_test_ticket_tracking_view ir.ui.view qweb New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (15)

New fields (5)
  • name Char
  • partner_id Many2one → res.partner
    string='Customer' args: 'res.partner'
  • track Char
    default='test' tracking=True
  • value Integer
  • value_pc Float
    compute='_value_pc' store=True
Public methods (0)

No public methods.

New fields (4)
  • field_0 Char
    tracking=True
  • field_1 Char
    tracking=True
  • field_2 Char
    tracking=True
  • name Char
    required=True tracking=True
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=True
  • date Date
  • email_from Char
  • name Char
Public methods (2)
  • action_close(self, action_feedback)
  • action_start(self, action_summary)

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • alias_id Many2one → mail.alias
    delegate=True args: 'mail.alias', 'Alias'
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • description Text
  • name Char
Public methods (0)

No public methods.

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
  • name Char
  • type Selection
    args: [('first', 'First'), ('second', 'Second')]
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (3)
  • custom_field Char
  • email_from Char
  • name Char
Public methods (1)
  • message_new(self, msg_dict, custom_values=None)
    @api.model
    Check override of 'message_new' allowing to update record values base on incoming email.

New fields (4)
  • custom_field Char
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (8)
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • count Integer
    default=1
  • customer_id Many2one → res.partner
    tracking=2 args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
    tracking=True
  • mail_template Many2one → mail.template
    args: 'mail.template', 'Template'
  • name Char
  • user_id Many2one → res.users
    tracking=1 args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    args: 'res.company'
  • container_id Many2one → mail.test.container
    tracking=True args: 'mail.test.container'
  • email_from Char
  • name Char
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (4)
  • partner_email Char
    related='partner_id.email' store=True tracking=True
  • partner_id Many2one → res.partner
    tracking=True args: 'res.partner'
  • partner_name Char
    related='partner_id.name' store=True tracking=True
  • partner_phone Char
    related='partner_id.phone' tracking=True
Public methods (0)

No public methods.

New fields (2)
  • name Char
  • type Selection
    tracking=True args: [('first', 'First'), ('second', 'Second')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/test_mail
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Nicolas Lempereur, Lucas Perais (lpe), Yannick Tivisse, Pierre Masereel, Romain Derie, jem-odoo, Jorge Pinna Puissant, Alexandre Kühn, XavierDo, Julien Castiaux, Aurélien Warnon, Priyanka Kakadiya, Xavier-Do, jvm-odoo, Andrea Grazioso (agr-odoo), Sébastien Theys, Anh Thao Pham (pta), Debauche Stéphane, Achraf (abz), Lucas Lefèvre, Ivan Yelizariev, Nasreddin Boulif (bon), Thanh Dodeur, Hubert Van de Walle (huvw), Florian Damhaut, thcl-odoo, Didier (did), diagnoza, jpr-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - test_performance
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - mail_bot
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains tests related to mail. Those are
contained in a separate module as it contains models used only to perform
tests independently to functional aspects of other models. 

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
mail_test_full_tracking_view mail_test_full_tracking_view ir.ui.view qweb New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (12)

New fields (4)
  • alias_id Many2one → mail.alias
    delegate=True args: 'mail.alias', 'Alias'
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • description Text
  • name Char
Public methods (2)
  • get_alias_model_name(self, vals)
  • get_alias_values(self)

New fields (4)
  • active Boolean
    default=True
  • date Date
  • email_from Char
  • name Char
Public methods (2)
  • action_close(self, action_feedback)
  • action_start(self, action_summary)

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
  • name Char
  • type Selection
    args: [('first', 'First'), ('second', 'Second')]
  • user_id Many2one → res.users
    track_visibility='onchange' args: 'res.users', 'Responsible'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (8)
  • count Integer
    default=1
  • customer_id Many2one → res.partner
    tracking=2 args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
    tracking=True
  • mail_template Many2one → mail.template
    args: 'mail.template', 'Template'
  • name Char
  • umbrella_id Many2one → mail.test
    tracking=True args: 'mail.test'
  • user_id Many2one → res.users
    tracking=1 args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (3)
  • custom_field Char
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • custom_field Char
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • email_from Char
  • name Char
Public methods (2)
  • get_alias_model_name(self, vals)
  • get_alias_values(self)

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    args: 'res.company'
  • email_from Char
  • name Char
  • umbrella_id Many2one → mail.test
    tracking=True args: 'mail.test'
  • user_id Many2one → res.users
    tracking=True args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (2)
  • name Char
  • type Selection
    tracking=True args: [('first', 'First'), ('second', 'Second')]
Public methods (0)

No public methods.

New fields (5)
  • name Char
  • partner_id Many2one → res.partner
    string='Customer' args: 'res.partner'
  • track Char
    default='test' tracking=True
  • value Integer
  • value_pc Float
    compute='_value_pc' store=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/test_mail
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Antony Lesuisse, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Nicolas Martinelli, Nicolas Lempereur, qdp-odoo, GitHub, Lucas Perais (lpe), Yannick Tivisse, Dharmraj Jhala, Nicolas Seinlet, Toufik Benjaa, Adrien Dieudonne, Christophe Monniez, Julien (juc) Castiaux, Nans Lefebvre, Alexandre Kühn, XavierDo, Julien Castiaux, Xavier-Do, jvm-odoo, Andrea Grazioso (agr-odoo), Anh Thao Pham (pta), Thanh Dodeur
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - test_performance
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - mail_bot
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains tests related to mail. Those are
contained in a separate module as it contains models used only to perform
tests independently to functional aspects of other models. 

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
mail_test_full_tracking_view mail_test_full_tracking_view ir.ui.view qweb New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (7)

New fields (4)
  • alias_id Many2one → mail.alias
    delegate=True args: 'mail.alias', 'Alias'
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • description Text
  • name Char
Public methods (2)
  • get_alias_model_name(self, vals)
  • get_alias_values(self)

New fields (4)
  • active Boolean
    default=True
  • date Date
  • email_from Char
  • name Char
Public methods (2)
  • action_close(self, action_feedback)
  • action_start(self, action_summary)

New fields (6)
  • customer_id Many2one → res.partner
    args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
  • name Char
  • type Selection
    args: [('first', 'First'), ('second', 'Second')]
  • user_id Many2one → res.users
    track_visibility='onchange' args: 'res.users', 'Responsible'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (8)
  • count Integer
    default=1
  • customer_id Many2one → res.partner
    track_sequence=2 track_visibility='onchange' args: 'res.partner', 'Customer'
  • datetime Datetime
    default=fields.Datetime.now
  • email_from Char
    track_visibility='always'
  • mail_template Many2one → mail.template
    args: 'mail.template', 'Template'
  • name Char
  • umbrella_id Many2one → mail.test
    track_visibility='onchange' args: 'mail.test'
  • user_id Many2one → res.users
    track_sequence=1 track_visibility='onchange' args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (2)
  • email_from Char
  • name Char
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    args: 'res.company'
  • email_from Char
  • name Char
  • umbrella_id Many2one → mail.test
    track_visibility='onchange' args: 'mail.test'
  • user_id Many2one → res.users
    track_visibility='onchange' args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (5)
  • name Char
  • partner_id Many2one → res.partner
    string='Customer' args: 'res.partner'
  • track Char
    default='test' track_visibility='onchange'
  • value Integer
  • value_pc Float
    compute='_value_pc' store=True
Public methods (0)

No public methods.