Use "available" presence type instead of "probe"
darcs-hash:20080528124630-86b55-0d0ee3b409a4c58cf4579c4ed894959b9f762cbd.gz
This commit is contained in:
@@ -337,54 +337,51 @@ class AccountManager(object):
|
|||||||
|
|
||||||
###### presence generic handlers ######
|
###### presence generic handlers ######
|
||||||
def get_presence_all(self, presence):
|
def get_presence_all(self, presence):
|
||||||
"""Send presence to all account. Optimized to use only one sql
|
"""Send presence to all account."""
|
||||||
request"""
|
|
||||||
result = []
|
result = []
|
||||||
model.db_connect()
|
|
||||||
for user in account.get_all_users():
|
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,
|
user.jid,
|
||||||
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))
|
presence)(_account))
|
||||||
model.db_disconnect()
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def get_root_presence(self, to_jid, presence_type,
|
def get_root_presence(self, to_jid, presence_type,
|
||||||
show=None, status=None):
|
show=None, status=None):
|
||||||
result = self.get_presence(self.component.jid, to_jid,
|
result = [self.get_presence(self.component.jid, to_jid,
|
||||||
presence_type, show=show,
|
presence_type, show=show,
|
||||||
status=status)
|
status=status)]
|
||||||
for legacy_jid in account.get_legacy_jids(unicode(to_jid.bare())):
|
for legacy_jid in account.get_legacy_jids(unicode(to_jid.bare())):
|
||||||
result.append(Presence(from_jid=legacy_jid.jid,
|
result.append(self.get_presence(from_jid=legacy_jid.jid,
|
||||||
to_jid=to_jid,
|
to_jid=to_jid,
|
||||||
show=show,
|
presence_type=presence_type,
|
||||||
status=status,
|
status=status,
|
||||||
stanza_type=presence_type))
|
show=show))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def get_presence(self, from_jid, to_jid, presence_type,
|
def get_presence(self, from_jid, to_jid, presence_type,
|
||||||
status=None, show=None):
|
status=None, show=None):
|
||||||
"""Send presence stanza"""
|
"""Send presence stanza"""
|
||||||
return [Presence(from_jid=from_jid,
|
return Presence(from_jid=from_jid,
|
||||||
to_jid=to_jid,
|
to_jid=to_jid,
|
||||||
status=status,
|
status=status,
|
||||||
show=show,
|
show=show,
|
||||||
stanza_type=presence_type)]
|
stanza_type=presence_type)
|
||||||
|
|
||||||
def get_account_presence_probe(self, _account):
|
def get_account_presence_probe(self, _account):
|
||||||
"""Send presence probe to account's user"""
|
"""Send presence probe to account's user"""
|
||||||
return self.get_presence(from_jid=_account.jid,
|
return [self.get_presence(from_jid=_account.jid,
|
||||||
to_jid=_account.user.jid,
|
to_jid=_account.user.jid,
|
||||||
presence_type="probe")
|
presence_type="probe")]
|
||||||
|
|
||||||
def get_account_presence_unavailable(self, _account):
|
def get_account_presence_unavailable(self, _account):
|
||||||
"""Send unavailable presence to account's user"""
|
"""Send unavailable presence to account's user"""
|
||||||
_account.status = account.OFFLINE
|
_account.status = account.OFFLINE
|
||||||
return self.get_presence(from_jid=_account.jid,
|
return [self.get_presence(from_jid=_account.jid,
|
||||||
to_jid=_account.user.jid,
|
to_jid=_account.user.jid,
|
||||||
presence_type="unavailable")
|
presence_type="unavailable")]
|
||||||
|
|
||||||
def get_account_presence_available(self, _account, lang_class):
|
def get_account_presence_available(self, _account, lang_class):
|
||||||
"""Send available presence to account's user and ask for password
|
"""Send available presence to account's user and ask for password
|
||||||
@@ -397,7 +394,7 @@ class AccountManager(object):
|
|||||||
elif not _account.enabled:
|
elif not _account.enabled:
|
||||||
_account.status = account.XA
|
_account.status = account.XA
|
||||||
if old_status != _account.status:
|
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,
|
to_jid=_account.user.jid,
|
||||||
status=_account.status_msg,
|
status=_account.status_msg,
|
||||||
show=_account.status,
|
show=_account.status,
|
||||||
@@ -412,7 +409,17 @@ class AccountManager(object):
|
|||||||
|
|
||||||
def probe_all_accounts_presence(self):
|
def probe_all_accounts_presence(self):
|
||||||
"""Send presence probe to all registered accounts"""
|
"""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 ######
|
###### Utils methods ######
|
||||||
def list_accounts(self, bare_from_jid, account_class=None,
|
def list_accounts(self, bare_from_jid, account_class=None,
|
||||||
|
|||||||
@@ -418,27 +418,27 @@ class JCLComponent_TestCase(JCLTestCase):
|
|||||||
self.assertTrue(isinstance(presence, Presence))
|
self.assertTrue(isinstance(presence, Presence))
|
||||||
self.assertEquals(presence.get_from(), "jcl.test.com")
|
self.assertEquals(presence.get_from(), "jcl.test.com")
|
||||||
self.assertEquals(presence.get_to(), "test1@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]
|
presence = self.comp.stream.sent[1]
|
||||||
self.assertTrue(isinstance(presence, Presence))
|
self.assertTrue(isinstance(presence, Presence))
|
||||||
self.assertEquals(presence.get_from(), "jcl.test.com")
|
self.assertEquals(presence.get_from(), "jcl.test.com")
|
||||||
self.assertEquals(presence.get_to(), "test2@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]
|
presence = self.comp.stream.sent[2]
|
||||||
self.assertTrue(isinstance(presence, Presence))
|
self.assertTrue(isinstance(presence, Presence))
|
||||||
self.assertEquals(presence.get_from(), "account11@jcl.test.com")
|
self.assertEquals(presence.get_from(), "account11@jcl.test.com")
|
||||||
self.assertEquals(presence.get_to(), "test1@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]
|
presence = self.comp.stream.sent[3]
|
||||||
self.assertTrue(isinstance(presence, Presence))
|
self.assertTrue(isinstance(presence, Presence))
|
||||||
self.assertEquals(presence.get_from(), "account12@jcl.test.com")
|
self.assertEquals(presence.get_from(), "account12@jcl.test.com")
|
||||||
self.assertEquals(presence.get_to(), "test1@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]
|
presence = self.comp.stream.sent[4]
|
||||||
self.assertTrue(isinstance(presence, Presence))
|
self.assertTrue(isinstance(presence, Presence))
|
||||||
self.assertEquals(presence.get_from(), "account2@jcl.test.com")
|
self.assertEquals(presence.get_from(), "account2@jcl.test.com")
|
||||||
self.assertEquals(presence.get_to(), "test2@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
|
# 'signal_handler' tests
|
||||||
|
|||||||
Reference in New Issue
Block a user