Assert correct account name in supplied registration form

darcs-hash:20080904193737-86b55-798544a0b023580ee2009155d727ce52f64fdce9.gz
This commit is contained in:
David Rousselie
2008-09-04 21:37:37 +02:00
parent 812b3a7799
commit b4b2f86a9d
4 changed files with 21 additions and 12 deletions

View File

@@ -29,21 +29,23 @@ from jcl.lang import Lang
class FieldError(Exception): class FieldError(Exception):
"""Error raised when error exists on Jabber Data Form fields""" """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) Exception.__init__(self)
self.field = field self.field = field
self.lang_class = lang_class self.lang_class = lang_class
self.message_property = message_property self.message_property = message_property
self.message = message self.detailed_message = detailed_message
def __str__(self): def __str__(self):
if self.message_property is None \ full_message = ""
or not hasattr(self.lang_class, self.message_property): if self.detailed_message is not None:
return self.lang_class.field_error % (str(self.field), self.message) full_message = self.detailed_message
else: elif self.message_property is not None \
return self.lang_class.field_error % \ and hasattr(self.lang_class, self.message_property):
(str(self.field), full_message = str(getattr(self.lang_class, self.message_property))
str(getattr(self.lang_class, self.message_property))) return self.lang_class.field_error % (str(self.field), full_message)
class MandatoryFieldError(FieldError): class MandatoryFieldError(FieldError):
"""Error raised when a mandatory field in a Form is not supplied""" """Error raised when a mandatory field in a Form is not supplied"""
@@ -54,5 +56,7 @@ class MandatoryFieldError(FieldError):
class NotWellFormedFieldError(FieldError): class NotWellFormedFieldError(FieldError):
"""Error raised when a supplied field in a Form is not well formed""" """Error raised when a supplied field in a Form is not well formed"""
def __init__ (self, field): def __init__ (self, field, detailed_message=None):
FieldError.__init__(self, field, message_property="not_well_formed_field") FieldError.__init__(self, field,
message_property="not_well_formed_field",
detailed_message=detailed_message)

View File

@@ -70,7 +70,8 @@ class SetRegisterHandler(object):
info_query, lang_class) info_query, lang_class)
if not self.field_name_regexp.match(form["name"].value): if not self.field_name_regexp.match(form["name"].value):
return self.handle_error(\ return self.handle_error(\
NotWellFormedFieldError("name"), NotWellFormedFieldError("name",
lang_class.arobase_in_name_forbidden),
info_query, lang_class) info_query, lang_class)
return None return None

View File

@@ -92,6 +92,7 @@ class Lang:
field_error = u"Error with '%s' field: %s" field_error = u"Error with '%s' field: %s"
mandatory_field = u"required field" mandatory_field = u"required field"
not_well_formed_field = u"not well formed 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_chat_action = u"Action when state is 'Free For Chat'"
field_online_action = u"Action when state is 'Online'" field_online_action = u"Action when state is 'Online'"
@@ -266,8 +267,10 @@ class Lang:
u"à jour" u"à jour"
update_account_message_body = u"Compte mis à jour" update_account_message_body = u"Compte mis à jour"
field_error = u"Erreur dans le champs '%s': %s"
mandatory_field = u"%s est requis" mandatory_field = u"%s est requis"
not_well_formed_field = u"Le champs %s n'est pas acceptable" 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_chat_action = u"Action lorsque l'état est 'Free For Chat'"
field_online_action = u"Action lorsque l'état est 'Online'" field_online_action = u"Action lorsque l'état est 'Online'"

View File

@@ -94,6 +94,7 @@ class Language_TestCase(unittest.TestCase):
self.assertNotEquals(self.lang_class.field_error % ("", ""), None) self.assertNotEquals(self.lang_class.field_error % ("", ""), None)
self.assertNotEquals(self.lang_class.mandatory_field, None) self.assertNotEquals(self.lang_class.mandatory_field, None)
self.assertNotEquals(self.lang_class.not_well_formed_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_chat_action, None)
self.assertNotEquals(self.lang_class.field_online_action, None) self.assertNotEquals(self.lang_class.field_online_action, None)