Phone Numbers Validation

phone_validation
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/phone_validation
VERSION
VERSION 2.1
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Thibault Delavallée, Xavier Morel, Jeremy Kersten, Julien Castiaux, Prakash Prajapati, Tiffany Chang (tic), Gorash, Renaud Thiry, Dylan Kiss (dyki), Antoine (ande), Xavier Bol (xbo), yagp-odoo, Krzysztof Magusiak (krma), Basioni (basm)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Phone Numbers Validation
========================

This module adds the feature of validation and formatting phone numbers
according to a destination country.

It also adds phone blacklist management through a specific model storing
blacklisted phone numbers.

It adds mail.thread.phone mixin that handles sanitation and blacklist of
records numbers. 

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
phone_blacklist_remove_view_form phone.blacklist.remove.form phone.blacklist.remove form New
phone_blacklist_view_form phone.blacklist.view.form phone.blacklist form New
phone_blacklist_view_search phone.blacklist.view.search phone.blacklist search New
phone_blacklist_view_tree phone.blacklist.view.list phone.blacklist list New
res_partner_view_search res.partner.view.search.inherit.phone.validation res.partner xpath Inherits base.view_res_partner_filter
Models touched (6)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • phone_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a phone number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone is Phone'
  • phone_mobile_search Char
    search='_search_phone_mobile_search' store=False args: 'Phone Number'
  • phone_sanitized Char
    compute='_compute_phone_sanitized' compute_sudo=True help='Field used to store sanitized phone number. Helps speeding up searches and comparisons.' store=True string='Sanitized Number'
  • phone_sanitized_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help="If the sanitized phone number is on the blacklist, the contact won't receive mass mailing sms anymore, from any list" search='_search_phone_sanitized_blacklisted' store=False string='Phone Blacklisted'
Public methods (2)
  • init(self)
  • phone_action_blacklist_remove(self)

New fields (2)
  • active Boolean
    default=True tracking=True
  • number Char
    help='Number should be E164 formatted' required=True search='_search_number' string='Phone Number' tracking=True
Public methods (6)
  • action_add(self)
  • add(self, number, message=None)
  • create(self, vals_list)
    @api.model_create_multi
    Create new (or activate existing) blacklisted numbers. A. Note: Attempt to create a number that already exists, but is non-active, will result in its activation. B. Note: If the number already exists and it's active, it will be added to returned set, (it won't be re-created) Returns Recordset union of created and existing phonenumbers from the requested list of numbers to create
  • phone_action_blacklist_remove(self)
  • remove(self, number, message=None)
  • write(self, vals)

New fields (2)
  • phone Char
    readonly=True required=True string='Phone Number'
  • reason Char
    name='Reason'
Public methods (1)
  • action_unblacklist_apply(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

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/phone_validation
VERSION
VERSION 2.1
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Jeremy Kersten, Odoo Online, Prakash Prajapati, Tiffany Chang (tic), Gorash, Renaud Thiry, Vincent Larcin, Louis Wicket (wil), Victor Piryns (pivi), Dylan Kiss (dyki), Antoine (ande), Andrzej(pian), dane@odoo.com, aktr-odoo, Maryam Kia, Louis (wil), Krzysztof Magusiak (krma), tegu-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Phone Numbers Validation
========================

This module adds the feature of validation and formatting phone numbers
according to a destination country.

It also adds phone blacklist management through a specific model storing
blacklisted phone numbers.

It adds mail.thread.phone mixin that handles sanitation and blacklist of
records numbers. 

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
phone_blacklist_remove_view_form phone.blacklist.remove.form phone.blacklist.remove form New
phone_blacklist_view_form phone.blacklist.view.form phone.blacklist form New
phone_blacklist_view_search phone.blacklist.view.search phone.blacklist search New
phone_blacklist_view_tree phone.blacklist.view.list phone.blacklist list New
Models touched (6)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • mobile_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a mobile number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone Is Mobile'
  • phone_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a phone number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone is Phone'
  • phone_mobile_search Char
    search='_search_phone_mobile_search' store=False args: 'Phone/Mobile'
  • phone_sanitized Char
    compute='_compute_phone_sanitized' compute_sudo=True help='Field used to store sanitized phone number. Helps speeding up searches and comparisons.' store=True string='Sanitized Number'
  • phone_sanitized_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help="If the sanitized phone number is on the blacklist, the contact won't receive mass mailing sms anymore, from any list" search='_search_phone_sanitized_blacklisted' store=False string='Phone Blacklisted'
Public methods (2)
  • init(self)
  • phone_action_blacklist_remove(self)

New fields (2)
  • active Boolean
    default=True tracking=True
  • number Char
    help='Number should be E164 formatted' required=True string='Phone Number' tracking=True
Public methods (6)
  • action_add(self)
  • add(self, number, message=None)
  • create(self, values)
    @api.model_create_multi
    Create new (or activate existing) blacklisted numbers. A. Note: Attempt to create a number that already exists, but is non-active, will result in its activation. B. Note: If the number already exists and it's active, it will be added to returned set, (it won't be re-created) Returns Recordset union of created and existing phonenumbers from the requested list of numbers to create
  • phone_action_blacklist_remove(self)
  • remove(self, number, message=None)
  • write(self, values)

New fields (2)
  • phone Char
    readonly=True required=True string='Phone Number'
  • reason Char
    name='Reason'
Public methods (1)
  • action_unblacklist_apply(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

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/phone_validation
VERSION
VERSION 2.1
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Odoo Online, Victor Feyens, Prakash Prajapati, Tiffany Chang (tic), Gorash, Pierre Paridans, Renaud Thiry, niyasraphy, Louis Wicket (wil), althaf shaik, Victor Piryns (pivi), amdi-odoo, Dylan Kiss (dyki), Antoine (ande), Andrzej(pian), dane@odoo.com, aktr-odoo, Julien Carion (juca), Louis (wil)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:04
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Phone Numbers Validation
========================

This module adds the feature of validation and formatting phone numbers
according to a destination country.

It also adds phone blacklist management through a specific model storing
blacklisted phone numbers.

It adds mail.thread.phone mixin that handles sanitation and blacklist of
records numbers. 

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
phone_blacklist_remove_view_form phone.blacklist.remove.form phone.blacklist.remove form New
phone_blacklist_view_form phone.blacklist.view.form phone.blacklist form New
phone_blacklist_view_search phone.blacklist.view.search phone.blacklist search New
phone_blacklist_view_tree phone.blacklist.view.tree phone.blacklist tree New
Models touched (6)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • mobile_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a mobile number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone Is Mobile'
  • phone_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a phone number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone is Phone'
  • phone_mobile_search Char
    search='_search_phone_mobile_search' store=False args: 'Phone/Mobile'
  • phone_sanitized Char
    compute='_compute_phone_sanitized' compute_sudo=True help='Field used to store sanitized phone number. Helps speeding up searches and comparisons.' store=True string='Sanitized Number'
  • phone_sanitized_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help="If the sanitized phone number is on the blacklist, the contact won't receive mass mailing sms anymore, from any list" search='_search_phone_sanitized_blacklisted' store=False string='Phone Blacklisted'
Public methods (2)
  • init(self)
  • phone_action_blacklist_remove(self)

New fields (2)
  • active Boolean
    default=True tracking=True
  • number Char
    help='Number should be E164 formatted' required=True string='Phone Number' tracking=True
Public methods (6)
  • action_add(self)
  • add(self, number, message=None)
  • create(self, values)
    @api.model_create_multi
    Create new (or activate existing) blacklisted numbers. A. Note: Attempt to create a number that already exists, but is non-active, will result in its activation. B. Note: If the number already exists and it's active, it will be added to returned set, (it won't be re-created) Returns Recordset union of created and existing phonenumbers from the requested list of numbers to create
  • phone_action_blacklist_remove(self)
  • remove(self, number, message=None)
  • write(self, values)

New fields (2)
  • phone Char
    readonly=True required=True string='Phone Number'
  • reason Char
    name='Reason'
Public methods (1)
  • action_unblacklist_apply(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

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/phone_validation
VERSION
VERSION 2.1
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, std-odoo, Prakash Prajapati, Tiffany Chang (tic), Bruno-brsy, niyasraphy, Louis Wicket (wil), Antoine (ande), Andrzej(pian), dane@odoo.com, aktr-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Phone Numbers Validation
========================

This module adds the feature of validation and formatting phone numbers
according to a destination country.

It also adds phone blacklist management through a specific model storing
blacklisted phone numbers.

It adds mail.thread.phone mixin that handles sanitation and blacklist of
records numbers. 

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
phone_blacklist_remove_view_form phone.blacklist.remove.form phone.blacklist.remove form New
phone_blacklist_view_form phone.blacklist.view.form phone.blacklist form New
phone_blacklist_view_search phone.blacklist.view.search phone.blacklist search New
phone_blacklist_view_tree phone.blacklist.view.tree phone.blacklist tree New
Models touched (5)

New fields (5)
  • mobile_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a mobile number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone Is Mobile'
  • phone_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a phone number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone is Phone'
  • phone_mobile_search Char
    search='_search_phone_mobile_search' store=False args: 'Phone/Mobile'
  • phone_sanitized Char
    compute='_compute_phone_sanitized' compute_sudo=True help='Field used to store sanitized phone number. Helps speeding up searches and comparisons.' store=True string='Sanitized Number'
  • phone_sanitized_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help="If the sanitized phone number is on the blacklist, the contact won't receive mass mailing sms anymore, from any list" search='_search_phone_sanitized_blacklisted' store=False string='Phone Blacklisted'
Public methods (3)
  • phone_action_blacklist_remove(self)
  • phone_get_sanitized_number(self, number_fname='mobile', force_format='E164')
  • phone_get_sanitized_numbers(self, number_fname='mobile', force_format='E164')

New fields (2)
  • active Boolean
    default=True tracking=True
  • number Char
    help='Number should be E164 formatted' required=True string='Phone Number' tracking=True
Public methods (7)
  • action_add(self)
  • action_remove_with_reason(self, number, reason=None)
  • add(self, number)
  • create(self, values)
    @api.model_create_multi
    Create new (or activate existing) blacklisted numbers. A. Note: Attempt to create a number that already exists, but is non-active, will result in its activation. B. Note: If the number already exists and it's active, it will be added to returned set, (it won't be re-created) Returns Recordset union of created and existing phonenumbers from the requested list of numbers to create
  • phone_action_blacklist_remove(self)
  • remove(self, number)
  • write(self, values)

New fields (2)
  • phone Char
    readonly=True required=True string='Phone Number'
  • reason Char
    name='Reason'
Public methods (1)
  • action_unblacklist_apply(self)

New fields (0)

No new fields.

Public methods (1)
  • phone_get_sanitized_number(self, number_fname='mobile', force_format='E164')
    Stand alone version, allowing to use it on partner model without having any dependency on sms module. To cleanup in master (15.3 +).

New fields (0)

No new fields.

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/phone_validation
VERSION
VERSION 2.1
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Xavier-Do, nounoubensebia, Kevin Baptiste, Bruno-brsy, Antoine (ande), Andrzej(pian), dane@odoo.com, aktr-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Phone Numbers Validation
========================

This module adds the feature of validation and formatting phone numbers
according to a destination country.

It also adds phone blacklist management through a specific model storing
blacklisted phone numbers.

It adds mail.thread.phone mixin that handles sanitation and blacklist of
records numbers. 

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
phone_blacklist_remove_view_form phone.blacklist.remove.form phone.blacklist.remove form New
phone_blacklist_view_form phone.blacklist.view.form phone.blacklist form New
phone_blacklist_view_search phone.blacklist.view.search phone.blacklist search New
phone_blacklist_view_tree phone.blacklist.view.tree phone.blacklist tree New
Models touched (4)

New fields (5)
  • mobile_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a mobile number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone Is Mobile'
  • phone_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a phone number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone is Phone'
  • phone_mobile_search Char
    search='_search_phone_mobile_search' store=False args: 'Phone/Mobile'
  • phone_sanitized Char
    compute='_compute_phone_sanitized' compute_sudo=True help='Field used to store sanitized phone number. Helps speeding up searches and comparisons.' store=True string='Sanitized Number'
  • phone_sanitized_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help="If the sanitized phone number is on the blacklist, the contact won't receive mass mailing sms anymore, from any list" search='_search_phone_sanitized_blacklisted' store=False string='Phone Blacklisted'
Public methods (3)
  • phone_action_blacklist_remove(self)
  • phone_get_sanitized_number(self, number_fname='mobile', force_format='E164')
  • phone_get_sanitized_numbers(self, number_fname='mobile', force_format='E164')

New fields (2)
  • active Boolean
    default=True tracking=True
  • number Char
    help='Number should be E164 formatted' index=True required=True string='Phone Number' tracking=True
Public methods (7)
  • action_add(self)
  • action_remove_with_reason(self, number, reason=None)
  • add(self, number)
  • create(self, values)
    @api.model_create_multi
  • phone_action_blacklist_remove(self)
  • remove(self, number)
  • write(self, values)

New fields (2)
  • phone Char
    readonly=True required=True string='Phone Number'
  • reason Char
    name='Reason'
Public methods (1)
  • action_unblacklist_apply(self)

New fields (0)

No new fields.

Public methods (1)
  • phone_get_sanitized_number(self, number_fname='mobile', force_format='E164')
    Stand alone version, allowing to use it on partner model without having any dependency on sms module. To cleanup in master (15.3 +).
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/phone_validation
VERSION
VERSION 2.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Barad Mahendra, Xavier-Do, Victor Feyens, Moisés López, Sébastien Theys, Tiffany Chang (tic), Bruno-brsy
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Phone Numbers Validation
========================

This module adds the feature of validation and formatting phone numbers
according to a destination country.

It also adds phone blacklist management through a specific model storing
blacklisted phone numbers.

It adds two mixins :

  * phone.validation.mixin: parsing / formatting helpers on records, to be
    used for example in number fields onchange;
  * mail.thread.phone: handle sanitation and blacklist of records numbers;

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
phone_blacklist_remove_view_form phone.blacklist.remove.form phone.blacklist.remove form New
phone_blacklist_view_form phone.blacklist.view.form phone.blacklist form New
phone_blacklist_view_search phone.blacklist.view.search phone.blacklist search New
phone_blacklist_view_tree phone.blacklist.view.tree phone.blacklist tree New
Models touched (5)

New fields (4)
  • mobile_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a mobile number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone Is Mobile'
  • phone_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help='Indicates if a blacklisted sanitized phone number is a phone number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.' store=False string='Blacklisted Phone is Phone'
  • phone_sanitized Char
    compute='_compute_phone_sanitized' compute_sudo=True help='Field used to store sanitized phone number. Helps speeding up searches and comparisons.' store=True string='Sanitized Number'
  • phone_sanitized_blacklisted Boolean
    compute='_compute_blacklisted' compute_sudo=True groups='base.group_user' help="If the sanitized phone number is on the blacklist, the contact won't receive mass mailing sms anymore, from any list" search='_search_phone_sanitized_blacklisted' store=False string='Phone Blacklisted'
Public methods (3)
  • phone_action_blacklist_remove(self)
  • phone_get_sanitized_number(self, number_fname='mobile', force_format='E164')
  • phone_get_sanitized_numbers(self, number_fname='mobile', force_format='E164')

New fields (2)
  • active Boolean
    default=True tracking=True
  • number Char
    help='Number should be E164 formatted' index=True required=True string='Phone Number' tracking=True
Public methods (7)
  • action_add(self)
  • action_remove_with_reason(self, number, reason=None)
  • add(self, number)
  • create(self, values)
    @api.model_create_multi
  • phone_action_blacklist_remove(self)
  • remove(self, number)
  • write(self, values)

New fields (2)
  • phone Char
    readonly=True required=True string='Phone Number'
  • reason Char
    name='Reason'
Public methods (1)
  • action_unblacklist_apply(self)

New fields (0)

No new fields.

Public methods (1)
  • phone_format(self, number, country=None, company=None)

New fields (0)

No new fields.

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/phone_validation
VERSION
VERSION 2.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, GitHub, Yannick Tivisse, Xavier-Do, Moisés López, ryv-odoo, Bruno-brsy
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Phone Numbers Validation
========================

This module adds the feature of validation and formatting phone numbers
according to a destination country.

It also adds phone blacklist management through a specific model storing
blacklisted phone numbers.

It adds two mixins :

  * phone.validation.mixin: parsing / formatting helpers on records, to be
    used for example in number fields onchange;
  * mail.thread.phone: handle sanitation and blacklist of records numbers;

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
phone_blacklist_view_form phone.blacklist.view.form phone.blacklist form New
phone_blacklist_view_search phone.blacklist.view.search phone.blacklist search New
phone_blacklist_view_tree phone.blacklist.view.tree phone.blacklist tree New
Models touched (4)

New fields (2)
  • phone_blacklisted Boolean
    compute='_compute_phone_blacklisted' compute_sudo=True groups='base.group_user' help="If the email address is on the blacklist, the contact won't receive mass mailing anymore, from any list" search='_search_phone_blacklisted' store=False string='Phone Blacklisted'
  • phone_sanitized Char
    compute='_compute_phone_sanitized' compute_sudo=True help='Field used to store sanitized phone number. Helps speeding up searches and comparisons.' store=True string='Sanitized Number'
Public methods (2)
  • phone_get_sanitized_number(self, number_fname='mobile', force_format='E164')
  • phone_get_sanitized_numbers(self, number_fname='mobile', force_format='E164')

New fields (2)
  • active Boolean
    default=True tracking=True
  • number Char
    help='Number should be E164 formatted' index=True required=True string='Phone Number' tracking=True
Public methods (4)
  • add(self, number)
  • create(self, values)
    @api.model_create_multi
  • remove(self, number)
  • write(self, values)

New fields (0)

No new fields.

Public methods (1)
  • phone_format(self, number, country=None, company=None)

New fields (0)

No new fields.

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/phone_validation
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Christophe Simonis, Yannick Tivisse, Xavier-Do, Moisés López
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Phone Numbers Validation
========================

This module adds the feature of validation and formatting phone numbers
according to a destination country. It also handles national and international
formatting.

This module applies this feature to Leads and Contacts.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
res_company_view_form_phone_validation res.company.view.form.phone_validation res.company xpath Inherits base.view_company_form
Models touched (2)

New fields (0)

No new fields.

Public methods (1)
  • phone_format(self, number, country=None, company=None)

New fields (1)
  • phone_international_format Selection
    default='prefix' help="Always encode phone numbers using international format. Otherwise numbers coming from the company's country are nationaly formatted. International numbers are always using international format." string='Local Numbers' args: [('no_prefix', 'No prefix'), ('prefix', 'Add international prefix')]
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/11.0/phone_validation
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Jérome Maes, Yannick Tivisse, Odoo Online, Rémi Rahir, Moisés López
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Phone Numbers Validation
========================

This module adds the feature of validation and formatting phone numbers
according to a destination country. It also handles national and international
formatting.

This module applies this feature to Leads and Contacts.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
res_company_view_form_phone_validation res.company.view.form.phone_validation res.company xpath Inherits base.view_company_form
Models touched (2)

New fields (0)

No new fields.

Public methods (1)
  • phone_format(self, number, country=None, company=None)

New fields (1)
  • phone_international_format Selection
    default='prefix' help="Always encode phone numbers using international format. Otherwise numbers coming from the company's country are nationaly formatted. International numbers are always using international format." string='Local Numbers' args: [('no_prefix', 'No prefix'), ('prefix', 'Add international prefix')]
Public methods (0)

No public methods.