Added the possibility to customize the global message when validation fails.
This commit is contained in:
parent
77112c45be
commit
9f418439aa
|
@ -372,6 +372,10 @@ class ClassDescriptor(appy.gen.descriptors.ClassDescriptor):
|
||||||
def addField(self, fieldName, fieldType):
|
def addField(self, fieldName, fieldType):
|
||||||
'''Adds a new field to the Tool.'''
|
'''Adds a new field to the Tool.'''
|
||||||
exec "self.modelClass.%s = fieldType" % fieldName
|
exec "self.modelClass.%s = fieldType" % fieldName
|
||||||
|
if fieldName in self.modelClass._appy_attributes:
|
||||||
|
print 'Warning, field "%s" is already existing on class "%s"' % \
|
||||||
|
(fieldName, self.modelClass.__name__)
|
||||||
|
return
|
||||||
self.modelClass._appy_attributes.append(fieldName)
|
self.modelClass._appy_attributes.append(fieldName)
|
||||||
self.orderedAttributes.append(fieldName)
|
self.orderedAttributes.append(fieldName)
|
||||||
|
|
||||||
|
|
|
@ -152,7 +152,7 @@ class BaseMixin:
|
||||||
inter-field validation errors.'''
|
inter-field validation errors.'''
|
||||||
obj = self.appy()
|
obj = self.appy()
|
||||||
if not hasattr(obj, 'validate'): return
|
if not hasattr(obj, 'validate'): return
|
||||||
obj.validate(values, errors)
|
msg = obj.validate(values, errors)
|
||||||
# Those custom validation methods may have added fields in the given
|
# Those custom validation methods may have added fields in the given
|
||||||
# p_errors object. Within this object, for every error message that is
|
# p_errors object. Within this object, for every error message that is
|
||||||
# not a string, we replace it with the standard validation error for the
|
# not a string, we replace it with the standard validation error for the
|
||||||
|
@ -162,6 +162,7 @@ class BaseMixin:
|
||||||
if not isinstance(resValue, basestring):
|
if not isinstance(resValue, basestring):
|
||||||
resValue = self.translate('field_invalid')
|
resValue = self.translate('field_invalid')
|
||||||
setattr(errors, key, resValue)
|
setattr(errors, key, resValue)
|
||||||
|
return msg
|
||||||
|
|
||||||
def onUpdate(self):
|
def onUpdate(self):
|
||||||
'''This method is executed when a user wants to update an object.
|
'''This method is executed when a user wants to update an object.
|
||||||
|
@ -205,10 +206,11 @@ class BaseMixin:
|
||||||
return self.skyn.edit(self)
|
return self.skyn.edit(self)
|
||||||
|
|
||||||
# Trigger inter-field validation
|
# Trigger inter-field validation
|
||||||
self.interFieldValidation(errors, values)
|
msg = self.interFieldValidation(errors, values)
|
||||||
|
if not msg: msg = errorMessage
|
||||||
if errors.__dict__:
|
if errors.__dict__:
|
||||||
rq.set('errors', errors.__dict__)
|
rq.set('errors', errors.__dict__)
|
||||||
self.plone_utils.addPortalMessage(errorMessage)
|
self.plone_utils.addPortalMessage(msg)
|
||||||
return self.skyn.edit(self)
|
return self.skyn.edit(self)
|
||||||
|
|
||||||
# Before saving data, must we ask a confirmation by the user ?
|
# Before saving data, must we ask a confirmation by the user ?
|
||||||
|
|
|
@ -64,13 +64,13 @@ class TranslationWrapper(AbstractWrapper):
|
||||||
|
|
||||||
def validate(self, new, errors):
|
def validate(self, new, errors):
|
||||||
# Call a custom "validate" if any.
|
# Call a custom "validate" if any.
|
||||||
self._callCustom('validate', new, errors)
|
return self._callCustom('validate', new, errors)
|
||||||
|
|
||||||
def onEdit(self, created):
|
def onEdit(self, created):
|
||||||
# Call a custom "onEdit" if any.
|
# Call a custom "onEdit" if any.
|
||||||
self._callCustom('onEdit', created)
|
return self._callCustom('onEdit', created)
|
||||||
|
|
||||||
def onDelete(self):
|
def onDelete(self):
|
||||||
# Call a custom "onDelete" if any.
|
# Call a custom "onDelete" if any.
|
||||||
self._callCustom('onDelete')
|
return self._callCustom('onDelete')
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
|
@ -52,7 +52,7 @@ class UserWrapper(AbstractWrapper):
|
||||||
msg = self.translate(u'Passwords do not match.', domain='plone')
|
msg = self.translate(u'Passwords do not match.', domain='plone')
|
||||||
errors.password1 = msg
|
errors.password1 = msg
|
||||||
errors.password2 = msg
|
errors.password2 = msg
|
||||||
self._callCustom('validate', new, errors)
|
return self._callCustom('validate', new, errors)
|
||||||
|
|
||||||
def onEdit(self, created):
|
def onEdit(self, created):
|
||||||
self.title = self.firstName + ' ' + self.name
|
self.title = self.firstName + ' ' + self.name
|
||||||
|
@ -88,7 +88,7 @@ class UserWrapper(AbstractWrapper):
|
||||||
# Remove the user if it was in the corresponding group
|
# Remove the user if it was in the corresponding group
|
||||||
if groupName in userGroups:
|
if groupName in userGroups:
|
||||||
group.removeMember(self.login)
|
group.removeMember(self.login)
|
||||||
self._callCustom('onEdit', created)
|
return self._callCustom('onEdit', created)
|
||||||
|
|
||||||
def onDelete(self):
|
def onDelete(self):
|
||||||
'''Before deleting myself, I must delete the corresponding Plone
|
'''Before deleting myself, I must delete the corresponding Plone
|
||||||
|
@ -97,5 +97,5 @@ class UserWrapper(AbstractWrapper):
|
||||||
self.o.acl_users._doDelUser(self.login)
|
self.o.acl_users._doDelUser(self.login)
|
||||||
self.log('Plone user "%s" deleted.' % self.login)
|
self.log('Plone user "%s" deleted.' % self.login)
|
||||||
# Call a custom "onDelete" if any.
|
# Call a custom "onDelete" if any.
|
||||||
self._callCustom('onDelete')
|
return self._callCustom('onDelete')
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
|
@ -42,7 +42,7 @@ class AbstractWrapper:
|
||||||
# There is a custom user class
|
# There is a custom user class
|
||||||
customUser = self.__class__.__bases__[-1]
|
customUser = self.__class__.__bases__[-1]
|
||||||
if customUser.__dict__.has_key(methodName):
|
if customUser.__dict__.has_key(methodName):
|
||||||
customUser.__dict__[methodName](self, *args, **kwargs)
|
return customUser.__dict__[methodName](self, *args, **kwargs)
|
||||||
|
|
||||||
def get_tool(self): return self.o.getTool().appy()
|
def get_tool(self): return self.o.getTool().appy()
|
||||||
tool = property(get_tool)
|
tool = property(get_tool)
|
||||||
|
|
Loading…
Reference in a new issue