Files
tryton/address.py
T
2018-12-29 14:20:29 +01:00

42 lines
1.3 KiB
Python

# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.i18n import gettext
from trytond.model import fields
from trytond.pyson import Eval
from trytond.pool import PoolMeta
from . import luhn
from .exceptions import SIRETValidationError
__all__ = ['Address']
class Address(metaclass=PoolMeta):
__name__ = 'party.address'
siret_nic = fields.Char('SIRET NIC', select=True, states={
'readonly': ~Eval('active', True),
}, size=5, depends=['active'])
siret = fields.Function(fields.Char('SIRET'), 'get_siret')
def get_siret(self, name):
if self.party.siren and self.siret_nic:
return self.party.siren + self.siret_nic
@classmethod
def validate(cls, addresses):
super(Address, cls).validate(addresses)
for address in addresses:
address.check_siret()
def check_siret(self):
'''
Check validity of SIRET
'''
if self.siret:
if (len(self.siret) != 14
or not luhn.validate(self.siret)):
raise SIRETValidationError(
gettext('party_siret.msg_invalid_siret',
number=self.siret,
address=self.rec_name))