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
path: root/src
diff options
context:
space:
mode:
authorDavid Rousselie <dax@happycoders.org>2008-05-28 16:46:30 +0400
committerDavid Rousselie <dax@happycoders.org>2008-05-28 16:46:30 +0400
commita43d0b9a3ad807e6e2b3ecc8dc1f1e2de9b28ace (patch)
treec9bb08b05431f1ec8422ae7dba97166e0874ab13 /src
parent2fd9bc173bd6aab0f2d442ae079c9e9710a6d922 (diff)
Use "available" presence type instead of "probe"
darcs-hash:20080528124630-86b55-0d0ee3b409a4c58cf4579c4ed894959b9f762cbd.gz
Diffstat (limited to 'src')
-rw-r--r--src/jcl/jabber/component.py59
-rw-r--r--src/jcl/jabber/tests/component.py10
2 files changed, 38 insertions, 31 deletions
diff --git a/src/jcl/jabber/component.py b/src/jcl/jabber/component.py
index 061aebe..ecf26af 100644
--- a/src/jcl/jabber/component.py
+++ b/src/jcl/jabber/component.py
@@ -337,54 +337,51 @@ class AccountManager(object):
###### presence generic handlers ######
def get_presence_all(self, presence):
- """Send presence to all account. Optimized to use only one sql
- request"""
+ """Send presence to all account."""
result = []
- model.db_connect()
for user in account.get_all_users():
- result.extend(self.get_presence(self.component.jid,
+ result.append(self.get_presence(self.component.jid,
user.jid,
presence))
for _account in account.get_all_accounts():
result.extend(getattr(self, "get_account_presence_" +
presence)(_account))
- model.db_disconnect()
return result
def get_root_presence(self, to_jid, presence_type,
show=None, status=None):
- result = self.get_presence(self.component.jid, to_jid,
- presence_type, show=show,
- status=status)
+ result = [self.get_presence(self.component.jid, to_jid,
+ presence_type, show=show,
+ status=status)]
for legacy_jid in account.get_legacy_jids(unicode(to_jid.bare())):
- result.append(Presence(from_jid=legacy_jid.jid,
- to_jid=to_jid,
- show=show,
- status=status,
- stanza_type=presence_type))
+ result.append(self.get_presence(from_jid=legacy_jid.jid,
+ to_jid=to_jid,
+ presence_type=presence_type,
+ status=status,
+ show=show))
return result
def get_presence(self, from_jid, to_jid, presence_type,
status=None, show=None):
"""Send presence stanza"""
- return [Presence(from_jid=from_jid,
- to_jid=to_jid,
- status=status,
- show=show,
- stanza_type=presence_type)]
+ return Presence(from_jid=from_jid,
+ to_jid=to_jid,
+ status=status,
+ show=show,
+ stanza_type=presence_type)
def get_account_presence_probe(self, _account):
"""Send presence probe to account's user"""
- return self.get_presence(from_jid=_account.jid,
- to_jid=_account.user.jid,
- presence_type="probe")
+ return [self.get_presence(from_jid=_account.jid,
+ to_jid=_account.user.jid,
+ presence_type="probe")]
def get_account_presence_unavailable(self, _account):
"""Send unavailable presence to account's user"""
_account.status = account.OFFLINE
- return self.get_presence(from_jid=_account.jid,
- to_jid=_account.user.jid,
- presence_type="unavailable")
+ return [self.get_presence(from_jid=_account.jid,
+ to_jid=_account.user.jid,
+ presence_type="unavailable")]
def get_account_presence_available(self, _account, lang_class):
"""Send available presence to account's user and ask for password
@@ -397,7 +394,7 @@ class AccountManager(object):
elif not _account.enabled:
_account.status = account.XA
if old_status != _account.status:
- result.extend(self.get_presence(from_jid=_account.jid,
+ result.append(self.get_presence(from_jid=_account.jid,
to_jid=_account.user.jid,
status=_account.status_msg,
show=_account.status,
@@ -412,7 +409,17 @@ class AccountManager(object):
def probe_all_accounts_presence(self):
"""Send presence probe to all registered accounts"""
- return self.get_presence_all("probe")
+ result = [self.get_presence(self.component.jid,
+ user.jid,
+ "available")
+ for user in account.get_all_users()]
+ result += [self.get_presence(from_jid=_account.jid,
+ to_jid=_account.user.jid,
+ status=_account.status_msg,
+ show=_account.status,
+ presence_type="available")
+ for _account in account.get_all_accounts()]
+ return result
###### Utils methods ######
def list_accounts(self, bare_from_jid, account_class=None,
diff --git a/src/jcl/jabber/tests/component.py b/src/jcl/jabber/tests/component.py
index 6628994..5288a3e 100644
--- a/src/jcl/jabber/tests/component.py
+++ b/src/jcl/jabber/tests/component.py
@@ -418,27 +418,27 @@ class JCLComponent_TestCase(JCLTestCase):
self.assertTrue(isinstance(presence, Presence))
self.assertEquals(presence.get_from(), "jcl.test.com")
self.assertEquals(presence.get_to(), "test1@test.com")
- self.assertEquals(presence.get_node().prop("type"), "probe")
+ self.assertEquals(presence.get_node().prop("type"), None)
presence = self.comp.stream.sent[1]
self.assertTrue(isinstance(presence, Presence))
self.assertEquals(presence.get_from(), "jcl.test.com")
self.assertEquals(presence.get_to(), "test2@test.com")
- self.assertEquals(presence.get_node().prop("type"), "probe")
+ self.assertEquals(presence.get_node().prop("type"), None)
presence = self.comp.stream.sent[2]
self.assertTrue(isinstance(presence, Presence))
self.assertEquals(presence.get_from(), "account11@jcl.test.com")
self.assertEquals(presence.get_to(), "test1@test.com")
- self.assertEquals(presence.get_node().prop("type"), "probe")
+ self.assertEquals(presence.get_node().prop("type"), None)
presence = self.comp.stream.sent[3]
self.assertTrue(isinstance(presence, Presence))
self.assertEquals(presence.get_from(), "account12@jcl.test.com")
self.assertEquals(presence.get_to(), "test1@test.com")
- self.assertEquals(presence.get_node().prop("type"), "probe")
+ self.assertEquals(presence.get_node().prop("type"), None)
presence = self.comp.stream.sent[4]
self.assertTrue(isinstance(presence, Presence))
self.assertEquals(presence.get_from(), "account2@jcl.test.com")
self.assertEquals(presence.get_to(), "test2@test.com")
- self.assertEquals(presence.get_node().prop("type"), "probe")
+ self.assertEquals(presence.get_node().prop("type"), None)
###########################################################################
# 'signal_handler' tests