Issue is that when a model inherits from phone.Validation.mixin, then from
mail.thread.phone (which inherits from phone.validation.mixin) we have
an issue :
TypeError: Cannot create a consistent method resolution
order (MRO) for bases BaseModel, base, mail.thread, phone.validation.mixin,
mail.thread.phone
As fixing it could be complicated we have a way to avoid it: move conflicting
code as it is used only in mail.thread.phone .
In this commit we also import a file forgotten at d2809cbd94 which triggers
the issue itself.
Task 2063049 (bug spotted)
Task 2061765 (triggering the issue)
closes odoo/odoo#36580
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
28 lines
909 B
Python
28 lines
909 B
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import models
|
|
from odoo.addons.phone_validation.tools import phone_validation
|
|
|
|
|
|
class PhoneValidationMixin(models.AbstractModel):
|
|
_name = 'phone.validation.mixin'
|
|
_description = 'Phone Validation Mixin'
|
|
|
|
def _phone_get_country(self):
|
|
if 'country_id' in self and self.country_id:
|
|
return self.country_id
|
|
return self.env.company.country_id
|
|
|
|
def phone_format(self, number, country=None, company=None):
|
|
country = country or self._phone_get_country()
|
|
if not country:
|
|
return number
|
|
return phone_validation.phone_format(
|
|
number,
|
|
country.code if country else None,
|
|
country.phone_code if country else None,
|
|
force_format='INTERNATIONAL',
|
|
raise_exception=False
|
|
)
|