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,
x_data):
"""Update account"""
self.__logger.debug("Updating account " + account_name)
self.__logger.debug("Updating account " + str(account_name))
bare_from_jid = unicode(from_jid.bare())
_account = account.get_account(bare_from_jid,
account_name)
@@ -341,7 +341,7 @@ class AccountManager(object):
presence))
for _account in account.get_all_accounts():
result.extend(getattr(self, "get_account_presence_" +
presence)(_account.user.jid, _account))
str(presence))(_account.user.jid, _account))
return result
def get_root_presence(self, to_jid, presence_type,
@@ -418,8 +418,8 @@ class AccountManager(object):
if account_class is None:
account_class = self.account_classes[0]
if account_type is not None and account_type != "":
resource = "/" + account_type
account_type = account_type + "/"
resource = "/" + str(account_type)
account_type = str(account_type) + "/"
else:
resource = ""
model.db_connect()
@@ -432,7 +432,7 @@ class AccountManager(object):
def list_account_types(self, lang_class):
"""List account supported 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):
type_label = getattr(lang_class, type_label_attr)
else:
@@ -519,7 +519,7 @@ class AccountManager(object):
def get_account_jid(self, 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):
"""Send a Jabber message to ask for account password
@@ -1079,7 +1079,7 @@ class JCLComponent(Component, object):
"""Handle new 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)
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 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):
"""Return an integer from integer 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")
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):
result = account.int_post_func("42", None, "user1@jcl.test.com")
self.assertEquals(result, 42)