Replace _constraints with validate in ModelStorage and improve user messages.

issue2616
review371002
This commit is contained in:
Albert Cervera i Areny
2013-03-07 16:55:05 +01:00
parent 42c29c991d
commit dab76830cc
2 changed files with 24 additions and 12 deletions
+12 -6
View File
@@ -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,
})
+12 -6
View File
@@ -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,
})