You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
# -*- coding: utf-8 -*-
|
|
# © 2016 Akretion (http://www.akretion.com)
|
|
# Sébastien BEAU <sebastien.beau@akretion.com>
|
|
# Alexis de Lattre <alexis.delattre@akretion.com>
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
|
|
|
|
from odoo import fields
|
|
from operator import attrgetter
|
|
import logging
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
try:
|
|
import phonenumbers
|
|
except ImportError:
|
|
_logger.debug('Cannot `import phonenumbers`.')
|
|
|
|
|
|
class Fax(fields.Char):
|
|
type = 'fax'
|
|
|
|
_slots = {
|
|
'country_field': None,
|
|
'partner_field': None,
|
|
}
|
|
|
|
def __init__(
|
|
self, string=fields.Default, country_field=fields.Default,
|
|
partner_field=fields.Default, **kwargs):
|
|
super(Fax, self).__init__(
|
|
string=string, country_field=country_field,
|
|
partner_field=partner_field, **kwargs)
|
|
|
|
_related_country_field = property(attrgetter('country_field'))
|
|
_related_partner_field = property(attrgetter('partner_field'))
|
|
|
|
def _setup_regular_full(self, model):
|
|
super(Fax, self)._setup_regular_full(model)
|
|
assert self.country_field in model._fields or \
|
|
self.partner_field in model._fields, \
|
|
"field %s with unknown country_field and partner_field" % self
|
|
|
|
def convert_to_cache(self, value, record, validate=True):
|
|
res = super(Fax, self).convert_to_cache(
|
|
value, record, validate=validate)
|
|
# print 'db value', res
|
|
if res:
|
|
try:
|
|
res_parse = phonenumbers.parse(res)
|
|
res = phonenumbers.format_number(
|
|
res_parse, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
|
|
no_break_space = u'\u00A0'
|
|
res = res.replace(' ', no_break_space)
|
|
except Exception:
|
|
pass
|
|
# print 'cache value', res
|
|
return res
|
|
|
|
|
|
class Phone(Fax):
|
|
type = 'phone'
|