From dab76830cc358f7d02a19013f7488e861a552d4f Mon Sep 17 00:00:00 2001 From: Albert Cervera i Areny Date: Thu, 7 Mar 2013 16:55:05 +0100 Subject: [PATCH] Replace _constraints with validate in ModelStorage and improve user messages. issue2616 review371002 --- address.py | 18 ++++++++++++------ party.py | 18 ++++++++++++------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/address.py b/address.py index e89ae00835..29cd393efb 100644 --- a/address.py +++ b/address.py @@ -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, + }) diff --git a/party.py b/party.py index 3af710ed5f..621377b2b0 100644 --- a/party.py +++ b/party.py @@ -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, + })