[Erp5-report] r18369 - /erp5/trunk/products/ERP5/Constraint/DocumentReferenceConstraint.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Dec 17 17:39:39 CET 2007
Author: jerome
Date: Mon Dec 17 17:39:38 2007
New Revision: 18369
URL: http://svn.erp5.org?rev=18369&view=rev
Log:
Use new style messages in Constraints.
Also change the behaviour a bit, don't raise an Exception directly, constraints
should *not* raise exceptions, simply use _generateError. What we should do is
add support for different severity in Constraints framework.
Modified:
erp5/trunk/products/ERP5/Constraint/DocumentReferenceConstraint.py
Modified: erp5/trunk/products/ERP5/Constraint/DocumentReferenceConstraint.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Constraint/DocumentReferenceConstraint.py?rev=18369&r1=18368&r2=18369&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Constraint/DocumentReferenceConstraint.py (original)
+++ erp5/trunk/products/ERP5/Constraint/DocumentReferenceConstraint.py Mon Dec 17 17:39:38 2007
@@ -27,9 +27,9 @@
##############################################################################
from Products.ERP5Type.Constraint import Constraint
-from Products.ERP5Type.Message import Message
-N_ = lambda msg, **kw: Message('erp5_ui', msg, **kw)
+N_ = lambda msg, **kw: msg # just to extract messages
_MARKER = []
+
class DocumentReferenceConstraint(Constraint):
"""
@@ -41,28 +41,57 @@
(although we could, e.g. by changing version number)
"""
+ _message_id_list = [ 'message_property_not_defined',
+ 'message_another_document_exists',
+ 'message_multiple_documents_exists' ]
+
+ message_property_not_defined = N_(
+ 'Property ${property_id} was not defined')
+ message_another_document_exists = N_(
+ 'Another document ${document_reference} - '
+ '${document_language} - ${document_version} already exists')
+ message_multiple_documents_exists = N_(
+ 'Multiple (${document_count}) documents ${document_reference} - '
+ '${document_language} - ${document_version} already exists')
+
def checkConsistency(self, object, fixit=0):
"""
Implement here the consistency checker
"""
- # XXX we probably could check reference syntax here, based on regexp in preferences?
+ # XXX we probably could check reference syntax here, based on regexp in
+ # preferences?
error_list = []
- for req in ('reference', 'language', 'version'):
- if object.getProperty(req) in (None, ''):
- message = '%s is not defined' % req # XXX-JPS Is translation required here with a Message class ?
- error_list.append(self._generateError(object, N_(message)))
+ for property_id in ('reference', 'language', 'version'):
+ if object.getProperty(property_id) in (None, ''):
+ error_list.append(self._generateError(object,
+ self._getMessage('message_property_not_defined'),
+ mapping=dict(property_id=property_id)))
if error_list:
return error_list
- res = object.portal_catalog(reference=object.getReference(), language=object.getLanguage(),
- version=object.getVersion(), portal_type=object.getPortalDocumentTypeList())
+
+ # XXX isn't it better to use unrestrictedSearchResults ?
+ # potential problem is that we would get deleted documents aswell
+ res = object.portal_catalog(reference=object.getReference(),
+ language=object.getLanguage(),
+ version=object.getVersion(),
+ portal_type=object.getPortalDocumentTypeList())
res = list(res)
if len(res) == 2: # this object and another object
- message = 'E: another object %s - %s - %s exists' % (object.getReference(),
- object.getLanguage(), object.getVersion())
- error_list.append(self._generateError(object, N_(message)))
- if len(res) > 2: # this is very serious since there are many objects with the same reference
- raise Exception('Fatal error: multiple objects %s - %s - %s exist' % (object.getReference(),
- object.getLanguage(), object.getVersion()))
- #error_list.append(self._generateError(object, N_(s)))
+ error_list.append(self._generateError(object,
+ self._getMessage('message_another_document_exists'),
+ mapping=dict(document_reference=object.getReference(),
+ document_language=object.getLanguage(),
+ document_version=object.getVersion())))
+
+ if len(res) > 2:
+ # this is very serious since there are many objects with the same
+ # reference
+ error_list.append(self._generateError(object,
+ self._getMessage('message_multiple_documents_exists'),
+ mapping=dict(document_count=len(res),
+ document_reference=object.getReference(),
+ document_language=object.getLanguage(),
+ document_version=object.getVersion())))
return error_list
+
More information about the Erp5-report
mailing list