diff --git a/src/jcl/error.py b/src/jcl/error.py index 5bf3ced..778343e 100644 --- a/src/jcl/error.py +++ b/src/jcl/error.py @@ -29,21 +29,23 @@ from jcl.lang import Lang class FieldError(Exception): """Error raised when error exists on Jabber Data Form fields""" - def __init__(self, field, message="", message_property=None, lang_class=Lang.en): + def __init__(self, field, + message_property=None, lang_class=Lang.en, + detailed_message=None): Exception.__init__(self) self.field = field self.lang_class = lang_class self.message_property = message_property - self.message = message + self.detailed_message = detailed_message def __str__(self): - if self.message_property is None \ - or not hasattr(self.lang_class, self.message_property): - return self.lang_class.field_error % (str(self.field), self.message) - else: - return self.lang_class.field_error % \ - (str(self.field), - str(getattr(self.lang_class, self.message_property))) + full_message = "" + if self.detailed_message is not None: + full_message = self.detailed_message + elif self.message_property is not None \ + and hasattr(self.lang_class, self.message_property): + full_message = str(getattr(self.lang_class, self.message_property)) + return self.lang_class.field_error % (str(self.field), full_message) class MandatoryFieldError(FieldError): """Error raised when a mandatory field in a Form is not supplied""" @@ -54,5 +56,7 @@ class MandatoryFieldError(FieldError): class NotWellFormedFieldError(FieldError): """Error raised when a supplied field in a Form is not well formed""" - def __init__ (self, field): - FieldError.__init__(self, field, message_property="not_well_formed_field") + def __init__ (self, field, detailed_message=None): + FieldError.__init__(self, field, + message_property="not_well_formed_field", + detailed_message=detailed_message) diff --git a/src/jcl/jabber/register.py b/src/jcl/jabber/register.py index 4c24bcc..160050c 100644 --- a/src/jcl/jabber/register.py +++ b/src/jcl/jabber/register.py @@ -70,7 +70,8 @@ class SetRegisterHandler(object): info_query, lang_class) if not self.field_name_regexp.match(form["name"].value): return self.handle_error(\ - NotWellFormedFieldError("name"), + NotWellFormedFieldError("name", + lang_class.arobase_in_name_forbidden), info_query, lang_class) return None diff --git a/src/jcl/lang.py b/src/jcl/lang.py index 9fb79cb..5a5ccd0 100644 --- a/src/jcl/lang.py +++ b/src/jcl/lang.py @@ -92,6 +92,7 @@ class Lang: field_error = u"Error with '%s' field: %s" mandatory_field = u"required field" not_well_formed_field = u"not well formed field" + arobase_in_name_forbidden = u"'@' is not allowed in account's name" field_chat_action = u"Action when state is 'Free For Chat'" field_online_action = u"Action when state is 'Online'" @@ -266,8 +267,10 @@ class Lang: u"à jour" update_account_message_body = u"Compte mis à jour" + field_error = u"Erreur dans le champs '%s': %s" mandatory_field = u"%s est requis" not_well_formed_field = u"Le champs %s n'est pas acceptable" + arobase_in_name_forbidden = u"Le nom du compte ne peux contenir le charactère '@'" field_chat_action = u"Action lorsque l'état est 'Free For Chat'" field_online_action = u"Action lorsque l'état est 'Online'" diff --git a/src/jcl/tests/lang.py b/src/jcl/tests/lang.py index 9a92ad0..c45d37d 100644 --- a/src/jcl/tests/lang.py +++ b/src/jcl/tests/lang.py @@ -94,6 +94,7 @@ class Language_TestCase(unittest.TestCase): self.assertNotEquals(self.lang_class.field_error % ("", ""), None) self.assertNotEquals(self.lang_class.mandatory_field, None) self.assertNotEquals(self.lang_class.not_well_formed_field, None) + self.assertNotEquals(self.lang_class.arobase_in_name_forbidden, None) self.assertNotEquals(self.lang_class.field_chat_action, None) self.assertNotEquals(self.lang_class.field_online_action, None)