support no announcement when executing announce ad-hoc command

darcs-hash:20070913190627-86b55-d39f1e563b8603024d27a803bafaee383e825866.gz
This commit is contained in:
David Rousselie
2007-09-13 21:06:27 +02:00
parent 32a1f6b7e2
commit d95e094a2b
2 changed files with 36 additions and 11 deletions

View File

@@ -897,17 +897,18 @@ class JCLCommandManager(CommandManager):
def execute_announce_2(self, info_query, session_context, def execute_announce_2(self, info_query, session_context,
command_node, lang_class): command_node, lang_class):
self.__logger.debug("Executing command 'announce' step 2") self.__logger.debug("Executing command 'announce' step 2")
announcement = session_context["announcement"][0]
users = account.get_all_users(\
filter=AND(Account.q.userID == User.q.id,
Account.q._status != account.OFFLINE),
distinct=True)
result = [] result = []
for user in users: if session_context.has_key("announcement"):
result.append(Message(from_jid=self.component.jid, announcement = session_context["announcement"][0]
to_jid=user.jid, users = account.get_all_users(\
body=announcement)) filter=AND(Account.q.userID == User.q.id,
command_node.setProp("status", STATUS_COMPLETED) Account.q._status != account.OFFLINE),
distinct=True)
for user in users:
result.append(Message(from_jid=self.component.jid,
to_jid=user.jid,
body=announcement))
command_node.setProp("status", STATUS_COMPLETED)
return (None, result) return (None, result)
########################################################################### ###########################################################################

View File

@@ -2329,7 +2329,7 @@ class JCLCommandManager_TestCase(JCLTestCase):
self.assertEquals(values[24].content, self.assertEquals(values[24].content,
"test1@test.com (account1112 ExampleAccount)") "test1@test.com (account1112 ExampleAccount)")
def test_execute_announce(self): def _common_execute_announce(self):
self.comp.account_manager.account_classes = (ExampleAccount, self.comp.account_manager.account_classes = (ExampleAccount,
Example2Account) Example2Account)
model.db_connect() model.db_connect()
@@ -2386,6 +2386,11 @@ class JCLCommandManager_TestCase(JCLTestCase):
session_id = xml_command.prop("sessionid") session_id = xml_command.prop("sessionid")
command_node.setProp("sessionid", session_id) command_node.setProp("sessionid", session_id)
command_node.setProp("action", "next") command_node.setProp("action", "next")
return (command_node, info_query, xml_command, session_id)
def test_execute_announce(self):
(command_node, info_query, xml_command,
session_id) = self._common_execute_announce()
submit_form = Form(xmlnode_or_type="submit") submit_form = Form(xmlnode_or_type="submit")
submit_form.add_field(field_type="text-multi", submit_form.add_field(field_type="text-multi",
name="announcement", name="announcement",
@@ -2412,6 +2417,25 @@ class JCLCommandManager_TestCase(JCLTestCase):
self.assertEquals(result[2].get_to(), "test2@test.com") self.assertEquals(result[2].get_to(), "test2@test.com")
self.assertEquals(result[2].get_body(), "test announce") self.assertEquals(result[2].get_body(), "test announce")
def test_execute_announce_no_announcement(self):
(command_node, info_query, xml_command,
session_id) = self._common_execute_announce()
submit_form = Form(xmlnode_or_type="submit")
submit_form.as_xml(command_node)
result = self.command_manager.apply_command_action(\
info_query,
"http://jabber.org/protocol/admin#announce",
"execute")
self.assertNotEquals(result, None)
self.assertEquals(len(result), 1)
xml_command = result[0].xpath_eval("c:command",
{"c": "http://jabber.org/protocol/commands"})[0]
self.assertEquals(xml_command.prop("status"), "completed")
self.assertEquals(xml_command.prop("sessionid"), session_id)
self.__check_actions(result[0])
context_session = self.command_manager.sessions[session_id][1]
self.assertFalse(context_session.has_key("announcement"))
def test_execute_set_motd(self): def test_execute_set_motd(self):
self.comp.account_manager.account_classes = (ExampleAccount, self.comp.account_manager.account_classes = (ExampleAccount,
Example2Account) Example2Account)