diff --git a/product/ERP5Type/ConsistencyMessage.py b/product/ERP5Type/ConsistencyMessage.py new file mode 100644 index 0000000000000000000000000000000000000000..cdb1a10f7c73abd2e2126621572c41604134d2a3 --- /dev/null +++ b/product/ERP5Type/ConsistencyMessage.py @@ -0,0 +1,77 @@ +############################################################################## +# +# Copyright (c) 2006 Nexedi SARL and Contributors. All Rights Reserved. +# Aurelien Calonne <aurel@nexedi.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# garantees and support are strongly adviced to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + +from Products.PythonScripts.Utility import allow_class + +class ConsistencyMessage: + """ + Object Message is used for notifications to user. + """ + def __init__(self, constraint, object_relative_url='', message='', mapping = {}, **kw): + + self.object_relative_url = object_relative_url + self.message = message + self.mapping = mapping + self.description = constraint.description + self.class_name = constraint.__class__.__name__ + self.__dict__.update(kw) + + def __getitem__(self, key): + """ + Backward compatibilty with previous tuple + message returned by Constraint + """ + if key == 0: + return self.object_relative_url + elif key == 1: + return '%s inconsistency' % self.class_name + elif key == 2: + return 104 + elif key == 4: + return self.description + else: + return self.getTranslatedMessage() + + def fix(self): + """ + Fix constraint + XXX to be implemented + """ + pass + + def getTranslatedMessage(self): + """ + Return the message translated + """ + from Products.ERP5Type.Message import Message + return Message(domain='erp5_ui', message=self.message, mapping=self.mapping) + + getMessage = getTranslatedMessage + + +allow_class(ConsistencyMessage) diff --git a/product/ERP5Type/Constraint/Constraint.py b/product/ERP5Type/Constraint/Constraint.py index c65d888758c88e131cd98893c9629855f5d6e8d9..b01f58b61280c856c51cfe5bea81a511daa5d62f 100644 --- a/product/ERP5Type/Constraint/Constraint.py +++ b/product/ERP5Type/Constraint/Constraint.py @@ -30,6 +30,7 @@ from Products.CMFCore.Expression import Expression from Products.ERP5Type.Interface import Constraint as IConstraint +from Products.ERP5Type.ConsistencyMessage import ConsistencyMessage class Constraint: """ @@ -60,16 +61,13 @@ class Constraint: if type is not None: self.type = type self.constraint_definition.update(constraint_definition) - def _generateError(self, obj, error_message): + def _generateError(self, obj, error_message, mapping={}): """ Generic method used to generate error in checkConsistency. """ - error = None - if error_message: - error = (obj.getRelativeUrl(), - '%s inconsistency' % self.__class__.__name__, - 104, error_message, self.description) - return error + if error_message is not None: + msg = ConsistencyMessage(self, obj.getRelativeUrl(), error_message, mapping) + return msg def _checkConstraintCondition(self, obj): """