Expose feature "commands"
darcs-hash:20070626060756-86b55-245bae8c7527b595e9786995582adff31072828e.gz
This commit is contained in:
@@ -331,10 +331,6 @@ class JCLComponent(Component, object):
|
|||||||
self.stream.send(info_query)
|
self.stream.send(info_query)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
def disco_get_commands_list():
|
|
||||||
"""Return Ad-Hoc commands list"""
|
|
||||||
return None
|
|
||||||
|
|
||||||
def disco_get_info(self, node, info_query):
|
def disco_get_info(self, node, info_query):
|
||||||
"""Discovery get info handler
|
"""Discovery get info handler
|
||||||
"""
|
"""
|
||||||
@@ -370,7 +366,8 @@ class JCLComponent(Component, object):
|
|||||||
self.account_manager.account_type_disco_get_items(from_jid,
|
self.account_manager.account_type_disco_get_items(from_jid,
|
||||||
account_type),
|
account_type),
|
||||||
lambda name, from_jid, account_type, lang_class: \
|
lambda name, from_jid, account_type, lang_class: \
|
||||||
self.account_manager.root_disco_get_items(from_jid,
|
self.account_manager.root_disco_get_items(node,
|
||||||
|
from_jid,
|
||||||
lang_class))
|
lang_class))
|
||||||
if result is None:
|
if result is None:
|
||||||
lang_class = self.lang.get_lang_class_from_node(info_query.get_node())
|
lang_class = self.lang.get_lang_class_from_node(info_query.get_node())
|
||||||
@@ -644,6 +641,7 @@ class AccountManager(object):
|
|||||||
if not node:
|
if not node:
|
||||||
disco_info = DiscoInfo()
|
disco_info = DiscoInfo()
|
||||||
disco_info.add_feature("jabber:iq:version")
|
disco_info.add_feature("jabber:iq:version")
|
||||||
|
disco_info.add_feature("http://jabber.org/protocol/commands")
|
||||||
if not self.has_multiple_account_type:
|
if not self.has_multiple_account_type:
|
||||||
disco_info.add_feature("jabber:iq:register")
|
disco_info.add_feature("jabber:iq:register")
|
||||||
DiscoIdentity(disco_info, name,
|
DiscoIdentity(disco_info, name,
|
||||||
@@ -667,27 +665,24 @@ class AccountManager(object):
|
|||||||
+ " class not in account_classes")
|
+ " class not in account_classes")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def root_disco_get_items(self, from_jid, lang_class):
|
def root_disco_get_items(self, node, from_jid, lang_class):
|
||||||
"""Discovery get_items on root node"""
|
"""Discovery get_items on root node"""
|
||||||
|
if node is not None:
|
||||||
|
return None
|
||||||
disco_items = None
|
disco_items = None
|
||||||
if self.has_multiple_account_type: # list accounts with only one type declared
|
if self.has_multiple_account_type: # list accounts with only one type declared
|
||||||
def _list_account_types(disco_items, account_class, bare_from_jid, account_type):
|
disco_items = DiscoItems()
|
||||||
|
for account_type in self.account_types:
|
||||||
type_label_attr = "type_" + account_type.lower() + "_name"
|
type_label_attr = "type_" + account_type.lower() + "_name"
|
||||||
if hasattr(lang_class, type_label_attr):
|
if hasattr(lang_class, type_label_attr):
|
||||||
type_label = getattr(lang_class, type_label_attr)
|
type_label = getattr(lang_class, type_label_attr)
|
||||||
else:
|
else:
|
||||||
type_label = account_type
|
type_label = account_type
|
||||||
return DiscoItem(disco_items,
|
DiscoItem(disco_items,
|
||||||
JID(unicode(self.component.jid) + "/" +
|
JID(unicode(self.component.jid) + "/" +
|
||||||
account_type),
|
account_type),
|
||||||
account_type,
|
account_type,
|
||||||
type_label)
|
type_label)
|
||||||
disco_items = DiscoItems()
|
|
||||||
for account_type in self.account_types:
|
|
||||||
_list_account_types(disco_items,
|
|
||||||
self._get_account_class(account_type
|
|
||||||
+ "Account"),
|
|
||||||
from_jid.bare(), account_type)
|
|
||||||
else:
|
else:
|
||||||
disco_items = self._list_accounts(self.account_classes[0],
|
disco_items = self._list_accounts(self.account_classes[0],
|
||||||
from_jid.bare())
|
from_jid.bare())
|
||||||
|
|||||||
@@ -568,7 +568,7 @@ class JCLComponent_TestCase(unittest.TestCase):
|
|||||||
info_query = Iq(stanza_type = "get", \
|
info_query = Iq(stanza_type = "get", \
|
||||||
from_jid = "user1@test.com", \
|
from_jid = "user1@test.com", \
|
||||||
to_jid = "jcl.test.com")
|
to_jid = "jcl.test.com")
|
||||||
disco_items = self.comp.disco_get_items("unknown", info_query)
|
disco_items = self.comp.disco_get_items(None, info_query)
|
||||||
self.assertEquals(len(disco_items.get_items()), 1)
|
self.assertEquals(len(disco_items.get_items()), 1)
|
||||||
disco_item = disco_items.get_items()[0]
|
disco_item = disco_items.get_items()[0]
|
||||||
self.assertEquals(disco_item.get_jid(), account1.jid)
|
self.assertEquals(disco_item.get_jid(), account1.jid)
|
||||||
@@ -576,10 +576,33 @@ class JCLComponent_TestCase(unittest.TestCase):
|
|||||||
self.assertEquals(disco_item.get_name(), account1.long_name)
|
self.assertEquals(disco_item.get_name(), account1.long_name)
|
||||||
|
|
||||||
def test_disco_get_items_unknown_node(self):
|
def test_disco_get_items_unknown_node(self):
|
||||||
|
self.comp.account_manager.account_classes = (ExampleAccount, )
|
||||||
|
account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL)
|
||||||
|
account11 = ExampleAccount(user_jid="user1@test.com",
|
||||||
|
name="account11",
|
||||||
|
jid="account11@jcl.test.com")
|
||||||
|
del account.hub.threadConnection
|
||||||
info_query = Iq(stanza_type="get",
|
info_query = Iq(stanza_type="get",
|
||||||
from_jid="user1@test.com",
|
from_jid="user1@test.com",
|
||||||
to_jid="jcl.test.com")
|
to_jid="jcl.test.com")
|
||||||
disco_items = self.comp.disco_get_items(None, info_query)
|
disco_items = self.comp.disco_get_items("unknown", info_query)
|
||||||
|
self.assertEquals(disco_items, None)
|
||||||
|
|
||||||
|
def test_disco_get_items_unknown_node_multiple_account_types(self):
|
||||||
|
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
|
||||||
|
account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL)
|
||||||
|
account11 = ExampleAccount(user_jid="user1@test.com",
|
||||||
|
name="account11",
|
||||||
|
jid="account11@jcl.test.com")
|
||||||
|
account21 = Example2Account(user_jid="user1@test.com",
|
||||||
|
name="account21",
|
||||||
|
jid="account21@jcl.test.com")
|
||||||
|
del account.hub.threadConnection
|
||||||
|
info_query = Iq(stanza_type="get",
|
||||||
|
from_jid="user1@test.com",
|
||||||
|
to_jid="jcl.test.com")
|
||||||
|
self.comp.account_manager.has_multiple_account_type = True
|
||||||
|
disco_items = self.comp.disco_get_items("unknown", info_query)
|
||||||
self.assertEquals(disco_items, None)
|
self.assertEquals(disco_items, None)
|
||||||
|
|
||||||
def test_disco_get_items_1type_with_node(self):
|
def test_disco_get_items_1type_with_node(self):
|
||||||
@@ -600,24 +623,27 @@ class JCLComponent_TestCase(unittest.TestCase):
|
|||||||
self.comp.lang = LangExample()
|
self.comp.lang = LangExample()
|
||||||
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
|
self.comp.account_manager.account_classes = (ExampleAccount, Example2Account)
|
||||||
account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL)
|
account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL)
|
||||||
account11 = ExampleAccount(user_jid = "user1@test.com", \
|
account11 = ExampleAccount(user_jid="user1@test.com",
|
||||||
name = "account11", \
|
name="account11",
|
||||||
jid = "account11@jcl.test.com")
|
jid="account11@jcl.test.com")
|
||||||
account21 = Example2Account(user_jid = "user1@test.com", \
|
account21 = Example2Account(user_jid="user1@test.com",
|
||||||
name = "account21", \
|
name="account21",
|
||||||
jid = "account21@jcl.test.com")
|
jid="account21@jcl.test.com")
|
||||||
del account.hub.threadConnection
|
del account.hub.threadConnection
|
||||||
info_query = Iq(stanza_type = "get", \
|
info_query = Iq(stanza_type="get",
|
||||||
from_jid = "user1@test.com", \
|
from_jid="user1@test.com",
|
||||||
to_jid = "jcl.test.com")
|
to_jid="jcl.test.com")
|
||||||
disco_items = self.comp.disco_get_items(None, info_query)
|
disco_items = self.comp.disco_get_items(None, info_query)
|
||||||
self.assertEquals(len(disco_items.get_items()), 2)
|
self.assertEquals(len(disco_items.get_items()), 2)
|
||||||
disco_item = disco_items.get_items()[0]
|
disco_item = disco_items.get_items()[0]
|
||||||
self.assertEquals(unicode(disco_item.get_jid()), unicode(self.comp.jid) + "/Example")
|
self.assertEquals(unicode(disco_item.get_jid()),
|
||||||
|
unicode(self.comp.jid) + "/Example")
|
||||||
self.assertEquals(disco_item.get_node(), "Example")
|
self.assertEquals(disco_item.get_node(), "Example")
|
||||||
self.assertEquals(disco_item.get_name(), LangExample.en.type_example_name)
|
self.assertEquals(disco_item.get_name(),
|
||||||
|
LangExample.en.type_example_name)
|
||||||
disco_item = disco_items.get_items()[1]
|
disco_item = disco_items.get_items()[1]
|
||||||
self.assertEquals(unicode(disco_item.get_jid()), unicode(self.comp.jid) + "/Example2")
|
self.assertEquals(unicode(disco_item.get_jid()),
|
||||||
|
unicode(self.comp.jid) + "/Example2")
|
||||||
self.assertEquals(disco_item.get_node(), "Example2")
|
self.assertEquals(disco_item.get_node(), "Example2")
|
||||||
# no name in language class for type Example2, so fallback on type name
|
# no name in language class for type Example2, so fallback on type name
|
||||||
self.assertEquals(disco_item.get_name(), "Example2")
|
self.assertEquals(disco_item.get_name(), "Example2")
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ class Lang:
|
|||||||
get_gateway_desc = u"Entrer l'adresse email de votre contact"
|
get_gateway_desc = u"Entrer l'adresse email de votre contact"
|
||||||
get_gateway_prompt = u"Adresse email"
|
get_gateway_prompt = u"Adresse email"
|
||||||
|
|
||||||
command_list = u"List les comptes"
|
command_list = u"Liste les comptes"
|
||||||
|
|
||||||
class nl:
|
class nl:
|
||||||
# TODO: when finish, delete this line and uncomment in tests/lang.py the makeSuite(Language_nl_TestCase, 'test') line
|
# TODO: when finish, delete this line and uncomment in tests/lang.py the makeSuite(Language_nl_TestCase, 'test') line
|
||||||
|
|||||||
Reference in New Issue
Block a user