diff --git a/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py b/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py index 7228dd7b6c662ae96ab6e744b84633813e087d2c..bdd162217bf85e863de2bcf842e61afe2294f4a7 100644 --- a/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py +++ b/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py @@ -1042,7 +1042,7 @@ def renderForm(traversed_document, form, response_dict, key_prefix=None, selecti try: response_dict[field.id] = renderField(traversed_document, field, form, key_prefix=key_prefix, selection_params=selection_params, request_field=not use_relation_form_page_template) if field_errors.has_key(field.id): - response_dict[field.id]["error_text"] = field_errors[field.id].error_text + response_dict[field.id]["error_text"] = field_errors[field.id].getMessage(Base_translateString) except AttributeError as error: # Do not crash if field configuration is wrong. log("Field {} rendering failed because of {!s}".format(field.id, error), level=800) diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/field_render.zpt b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/field_render.zpt index c76e64683b7d2579b7617bbd4d77aa66087d5493..5e8789c3ff97fae2b504cb9efd1cd11fb696b012 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/field_render.zpt +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/field_render.zpt @@ -30,8 +30,7 @@
+ tal:content="python: field_errors[field_id].getMessage(here.Base_translateString)" />

diff --git a/product/Formulator/Errors.py b/product/Formulator/Errors.py index e2276ef4da61b9d29db20bcc23d7329d508cfd74..8d86d7d59c2fd043beb12a7876aba39d5e237cfe 100644 --- a/product/Formulator/Errors.py +++ b/product/Formulator/Errors.py @@ -5,6 +5,7 @@ # from Products.Formulator.Errors import ValidationError, FormValidationError from Products.PythonScripts.Utility import allow_class +from AccessControl import ClassSecurityInfo class FormValidationError(Exception): @@ -17,6 +18,8 @@ allow_class(FormValidationError) class ValidationError(Exception): + security = ClassSecurityInfo() + def __init__(self, error_key, field, error_text=None): Exception.__init__(self, error_key) self.error_key = error_key @@ -24,8 +27,18 @@ class ValidationError(Exception): self.field = field if error_text is not None: self.error_text = error_text + self.is_message_to_translate = False else: self.error_text = field.get_error_message(error_key) + self.is_message_to_translate = True + + security.declarePublic('getMessage') + def getMessage(self, translation_service=None): + if not self.is_message_to_translate: + return self.error_text + if translation_service is None: + return self.error_text + return translation_service(self.error_text) allow_class(ValidationError)