Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dax/jcl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rousselie <david.rousselie@happycoders.org>2010-06-08 21:32:30 +0400
committerDavid Rousselie <david.rousselie@happycoders.org>2010-06-08 21:32:30 +0400
commit3d0d70c97674f96c811ba5fe46c1057cdd2125a2 (patch)
tree24b84eef51065092eef4724d6cf1c86b8bda1350
parent35a861f1880194f5ea71a22b1d02df33674e6f7a (diff)
Add post processing boolean field function to take into account boolean sent as strings
-rw-r--r--src/jcl/jabber/component.py14
-rw-r--r--src/jcl/model/account.py11
-rw-r--r--src/jcl/model/tests/account.py36
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)