Replace _constraints with validate in ModelStorage and improve user messages.
issue2616 review371002
This commit is contained in:
+12
-6
@@ -20,17 +20,21 @@ class Address:
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Address, cls).__setup__()
|
||||
cls._constraints += [
|
||||
('check_siret', 'invalid_siret'),
|
||||
]
|
||||
cls._error_messages.update({
|
||||
'invalid_siret': 'Invalid SIRET number!',
|
||||
'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
|
||||
@@ -38,5 +42,7 @@ class Address:
|
||||
if self.siret:
|
||||
if (len(self.siret) != 14
|
||||
or not luhn.validate(self.siret)):
|
||||
return False
|
||||
return True
|
||||
self.raise_user_error('invalid_siret', {
|
||||
'siret': self.siret,
|
||||
'address': self.rec_name,
|
||||
})
|
||||
|
||||
@@ -19,18 +19,24 @@ class Party:
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Party, cls).__setup__()
|
||||
cls._constraints += [
|
||||
('check_siren', 'invalid_siren'),
|
||||
]
|
||||
cls._error_messages.update({
|
||||
'invalid_siren': 'Invalid SIREN number!',
|
||||
'invalid_siren': ('Invalid SIREN number "%(siren)s" on party '
|
||||
'"%(party)s".'),
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def validate(cls, parties):
|
||||
super(Party, cls).validate(parties)
|
||||
for party in parties:
|
||||
party.check_siren()
|
||||
|
||||
def check_siren(self):
|
||||
'''
|
||||
Check validity of SIREN
|
||||
'''
|
||||
if self.siren:
|
||||
if len(self.siren) != 9 or not luhn.validate(self.siren):
|
||||
return False
|
||||
return True
|
||||
self.raise_user_error('invalid_siren', {
|
||||
'siren': self.siren,
|
||||
'party': self.rec_name,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user