Before this commit if you would call phone_parse() but not pass along a country code it would crash. This is reproducable by calling the phone_parse function and not setting a country on the contact. In this case you would get the following traceback: AttributeError: 'bool' object has no attribute 'upper'. This happens because the phonenumbers library tries to upper() the region but if Odoo doesn't have a country set it passes along False. By doing a fallback to 'None' the phonenumbers library will natively handle this and the user in the UI does not get a traceback. Task-2852953 closes odoo/odoo#112699 X-original-commit: 9b75d7ac1a912ff3d15c393a6a23018a18b3b9bb Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com> Co-authored-by: Thibault Delavallee <tde@odoo.com>
24 lines
802 B
Python
24 lines
802 B
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo.addons.phone_validation.tools import phone_validation
|
|
from odoo.exceptions import UserError
|
|
from odoo.tests import tagged
|
|
from odoo.tests.common import BaseCase
|
|
|
|
|
|
@tagged('phone_validation')
|
|
class TestPhonenumbers(BaseCase):
|
|
|
|
def test_country_code_falsy(self):
|
|
self.assertEqual(
|
|
phone_validation.phone_format('0456998877', 'BE', '32', force_format='E164'),
|
|
'+32456998877'
|
|
)
|
|
# no country code -> UserError, no internal traceback
|
|
with self.assertRaises(UserError):
|
|
self.assertEqual(
|
|
phone_validation.phone_format('0456998877', None, '32', force_format='E164'),
|
|
'+32456998877'
|
|
)
|