Add post processing boolean field function to take into account boolean sent as strings

This commit is contained in:
David Rousselie
2010-06-08 19:32:30 +02:00
parent 35a861f188
commit 3d0d70c976
3 changed files with 54 additions and 7 deletions

View File

@@ -258,7 +258,7 @@ class AccountManager(object):
lang_class, lang_class,
x_data): x_data):
"""Update account""" """Update account"""
self.__logger.debug("Updating account " + account_name) self.__logger.debug("Updating account " + str(account_name))
bare_from_jid = unicode(from_jid.bare()) bare_from_jid = unicode(from_jid.bare())
_account = account.get_account(bare_from_jid, _account = account.get_account(bare_from_jid,
account_name) account_name)
@@ -341,7 +341,7 @@ class AccountManager(object):
presence)) presence))
for _account in account.get_all_accounts(): for _account in account.get_all_accounts():
result.extend(getattr(self, "get_account_presence_" + result.extend(getattr(self, "get_account_presence_" +
presence)(_account.user.jid, _account)) str(presence))(_account.user.jid, _account))
return result return result
def get_root_presence(self, to_jid, presence_type, def get_root_presence(self, to_jid, presence_type,
@@ -418,8 +418,8 @@ class AccountManager(object):
if account_class is None: if account_class is None:
account_class = self.account_classes[0] account_class = self.account_classes[0]
if account_type is not None and account_type != "": if account_type is not None and account_type != "":
resource = "/" + account_type resource = "/" + str(account_type)
account_type = account_type + "/" account_type = str(account_type) + "/"
else: else:
resource = "" resource = ""
model.db_connect() model.db_connect()
@@ -432,7 +432,7 @@ class AccountManager(object):
def list_account_types(self, lang_class): def list_account_types(self, lang_class):
"""List account supported types""" """List account supported types"""
for account_type in self.account_types: for account_type in self.account_types:
type_label_attr = "type_" + account_type.lower() + "_name" type_label_attr = "type_" + str(account_type).lower() + "_name"
if hasattr(lang_class, type_label_attr): if hasattr(lang_class, type_label_attr):
type_label = getattr(lang_class, type_label_attr) type_label = getattr(lang_class, type_label_attr)
else: else:
@@ -519,7 +519,7 @@ class AccountManager(object):
def get_account_jid(self, name): def get_account_jid(self, name):
"""Compose account jid from account name""" """Compose account jid from account name"""
return name + u"@" + unicode(self.component.jid) return unicode(name) + u"@" + unicode(self.component.jid)
def ask_password(self, to_jid, _account, lang_class): def ask_password(self, to_jid, _account, lang_class):
"""Send a Jabber message to ask for account password """Send a Jabber message to ask for account password
@@ -1079,7 +1079,7 @@ class JCLComponent(Component, object):
"""Handle new message """Handle new message
Handle password response message Handle password response message
""" """
self.__logger.debug("MESSAGE: " + message.get_body()) self.__logger.debug("MESSAGE: " + str(message.get_body()))
self.apply_registered_behavior(self.msg_handlers, message) self.apply_registered_behavior(self.msg_handlers, message)
return 1 return 1

View File

@@ -49,6 +49,17 @@ def default_post_func(field_value, default_func, bare_from_jid):
return default_func(bare_from_jid) return default_func(bare_from_jid)
return field_value return field_value
def boolean_post_func(field_value, default_func, bare_from_jid):
"""Return a boolean for boolean field"""
if field_value is None or str(field_value) == "":
return default_func(bare_from_jid)
if isinstance(field_value, str) or isinstance(field_value, unicode):
field_value = field_value.lower()
bool_value = (field_value == "true" or field_value == "1")
else:
bool_value = field_value
return bool_value
def int_post_func(field_value, default_func, bare_from_jid): def int_post_func(field_value, default_func, bare_from_jid):
"""Return an integer from integer field value""" """Return an integer from integer field value"""
if field_value is None or str(field_value) == "": if field_value is None or str(field_value) == "":

View File

@@ -137,6 +137,42 @@ class AccountModule_TestCase(JCLTestCase):
"user1@jcl.test.com") "user1@jcl.test.com")
self.assertEquals(result, "test") self.assertEquals(result, "test")
def test_boolean_post_func_with_1_str(self):
result = account.boolean_post_func("1", None, "user1@jcl.test.com")
self.assertEquals(result, True)
def test_boolean_post_func_with_True_str(self):
result = account.boolean_post_func("True", None, "user1@jcl.test.com")
self.assertEquals(result, True)
def test_boolean_post_func_with_False_str(self):
result = account.boolean_post_func("False", None, "user1@jcl.test.com")
self.assertEquals(result, False)
def test_boolean_post_func_with_1_unicode(self):
result = account.boolean_post_func(u"1", None, "user1@jcl.test.com")
self.assertEquals(result, True)
def test_boolean_post_func_with_True_unicode(self):
result = account.boolean_post_func(u"true", None, "user1@jcl.test.com")
self.assertEquals(result, True)
def test_boolean_post_func_with_False_unicode(self):
result = account.boolean_post_func(u"False", None, "user1@jcl.test.com")
self.assertEquals(result, False)
def test_boolean_post_func_with_1(self):
result = account.boolean_post_func(1, None, "user1@jcl.test.com")
self.assertEquals(result, False)
def test_boolean_post_func_with_True(self):
result = account.boolean_post_func(True, None, "user1@jcl.test.com")
self.assertEquals(result, True)
def test_boolean_post_func_with_False(self):
result = account.boolean_post_func(False, None, "user1@jcl.test.com")
self.assertEquals(result, False)
def test_int_post_func(self): def test_int_post_func(self):
result = account.int_post_func("42", None, "user1@jcl.test.com") result = account.int_post_func("42", None, "user1@jcl.test.com")
self.assertEquals(result, 42) self.assertEquals(result, 42)