diff options
author | David Rousselie <david.rousselie@happycoders.org> | 2010-06-08 21:32:30 +0400 |
---|---|---|
committer | David Rousselie <david.rousselie@happycoders.org> | 2010-06-08 21:32:30 +0400 |
commit | 3d0d70c97674f96c811ba5fe46c1057cdd2125a2 (patch) | |
tree | 24b84eef51065092eef4724d6cf1c86b8bda1350 | |
parent | 35a861f1880194f5ea71a22b1d02df33674e6f7a (diff) |
Add post processing boolean field function to take into account boolean sent as strings
-rw-r--r-- | src/jcl/jabber/component.py | 14 | ||||
-rw-r--r-- | src/jcl/model/account.py | 11 | ||||
-rw-r--r-- | src/jcl/model/tests/account.py | 36 |
3 files changed, 54 insertions, 7 deletions
diff --git a/src/jcl/jabber/component.py b/src/jcl/jabber/component.py index d8ce64d..e82e1a3 100644 --- a/src/jcl/jabber/component.py +++ b/src/jcl/jabber/component.py @@ -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 diff --git a/src/jcl/model/account.py b/src/jcl/model/account.py index 439de82..fc2fcbc 100644 --- a/src/jcl/model/account.py +++ b/src/jcl/model/account.py @@ -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) == "": diff --git a/src/jcl/model/tests/account.py b/src/jcl/model/tests/account.py index 9910866..964d776 100644 --- a/src/jcl/model/tests/account.py +++ b/src/jcl/model/tests/account.py @@ -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) |