From 8a6d359a4bc718cda6817edd910c6d4767d161d6 Mon Sep 17 00:00:00 2001 From: Albert Cervera i Areny Date: Thu, 7 Mar 2013 16:55:36 +0100 Subject: [PATCH] Replace _constraints with validate in ModelStorage and improve user messages. issue2616 review371002 --- price_list.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/price_list.py b/price_list.py index 13bdac40f1..a1e9650be6 100644 --- a/price_list.py +++ b/price_list.py @@ -133,11 +133,9 @@ class PriceListLine(ModelSQL, ModelView): super(PriceListLine, cls).__setup__() cls._order.insert(0, ('price_list', 'ASC')) cls._order.insert(0, ('sequence', 'ASC')) - cls._constraints += [ - ('check_formula', 'invalid_formula'), - ] cls._error_messages.update({ - 'invalid_formula': 'Invalid formula!', + 'invalid_formula': ('Invalid formula "%(formula)s" in price ' + 'list line "%(line)s".'), }) @classmethod @@ -159,6 +157,12 @@ class PriceListLine(ModelSQL, ModelView): return self.product.default_uom.digits return 2 + @classmethod + def validate(cls, lines): + super(PriceListLine, cls).validate(lines) + for line in lines: + line.check_formula() + def check_formula(self): ''' Check formula @@ -171,10 +175,15 @@ class PriceListLine(ModelSQL, ModelView): with Transaction().set_context(**context): try: if not isinstance(self.get_unit_price(), Decimal): - return False + self.raise_user_error('invalid_formula', { + 'formula': self.formula, + 'line': self.rec_name, + }) except Exception: - return False - return True + self.raise_user_error('invalid_formula', { + 'formula': self.formula, + 'line': self.rec_name, + }) def match(self, pattern): '''