Files
tryton/address.py
T
2016-02-20 11:27:03 +01:00

50 lines
1.5 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.model import fields
from trytond.pyson import Eval
from trytond.pool import PoolMeta
from . import luhn
__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')
@classmethod
def __setup__(cls):
super(Address, cls).__setup__()
cls._error_messages.update({
'invalid_siret': (
'Invalid SIRET number "%(siret)s" on address '
'"%(address)s"'),
})
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)):
self.raise_user_error('invalid_siret', {
'siret': self.siret,
'address': self.rec_name,
})