'change-user-password' ad-hoc command form was not complete

darcs-hash:20070808160758-86b55-d58f617297011e200cef0886f936588d19c7720a.gz
This commit is contained in:
David Rousselie
2007-08-08 18:07:58 +02:00
parent 24f175b271
commit 702e58324f
5 changed files with 52 additions and 35 deletions

View File

@@ -223,7 +223,17 @@ class JCLCommandManager(CommandManager):
"""Implement default set of Ad-Hoc commands"""
def __init__(self, component=None, account_manager=None):
"""JCLCommandManager constructor"""
"""
JCLCommandManager constructor
Not implemented commands:
"http://jabber.org/protocol/admin#user-stats",
"http://jabber.org/protocol/admin#edit-blacklist",
"http://jabber.org/protocol/admin#add-to-blacklist-in",
"http://jabber.org/protocol/admin#add-to-blacklist-out",
"http://jabber.org/protocol/admin#edit-whitelist",
"http://jabber.org/protocol/admin#add-to-whitelist-in",
"http://jabber.org/protocol/admin#add-to-whitelist-out",
"""
CommandManager.__init__(self, component, account_manager)
self.__logger = logging.getLogger("jcl.jabber.command.JCLCommandManager")
self.commands.extend(["list",
@@ -236,13 +246,6 @@ class JCLCommandManager(CommandManager):
"http://jabber.org/protocol/admin#change-user-password",
"http://jabber.org/protocol/admin#get-user-roster",
"http://jabber.org/protocol/admin#get-user-lastlogin",
"http://jabber.org/protocol/admin#user-stats",
"http://jabber.org/protocol/admin#edit-blacklist",
"http://jabber.org/protocol/admin#add-to-blacklist-in",
"http://jabber.org/protocol/admin#add-to-blacklist-out",
"http://jabber.org/protocol/admin#edit-whitelist",
"http://jabber.org/protocol/admin#add-to-whitelist-in",
"http://jabber.org/protocol/admin#add-to-whitelist-out",
"http://jabber.org/protocol/admin#get-registered-users-num",
"http://jabber.org/protocol/admin#get-disabled-users-num",
"http://jabber.org/protocol/admin#get-online-users-num",
@@ -263,6 +266,9 @@ class JCLCommandManager(CommandManager):
"http://jabber.org/protocol/admin#restart",
"http://jabber.org/protocol/admin#shutdown"])
def get_name_and_jid(self, mixed_name_and_jid):
return mixed_name_and_jid.split("/", 1)[:2]
## Reusable steps
def add_form_select_user_jids(self, command_node, lang_class):
result_form = Form(xmlnode_or_type="result",
@@ -298,7 +304,7 @@ class JCLCommandManager(CommandManager):
def add_form_select_accounts(self, session_context,
command_node, lang_class,
filter=None):
filter=None, format_as_xml=True):
"""
Add a form to select accounts for user JIDs contained in
session_context[\"user_jids\"]
@@ -310,11 +316,13 @@ class JCLCommandManager(CommandManager):
label="Account") # TODO
self.__add_accounts_to_field(session_context["user_jids"],
field, lang_class, filter)
result_form.as_xml(command_node)
if format_as_xml:
result_form.as_xml(command_node)
return result_form
def add_form_select_account(self, session_context,
command_node, lang_class):
command_node, lang_class,
format_as_xml=True):
"""
Add a form to select account for user JIDs contained in
session_context[\"user_jids\"]
@@ -326,7 +334,8 @@ class JCLCommandManager(CommandManager):
label="Account") # TODO
self.__add_accounts_to_field(session_context["user_jid"],
field, lang_class)
result_form.as_xml(command_node)
if format_as_xml:
result_form.as_xml(command_node)
return result_form
def select_user_jids_step_1(self, info_query, session_context,
@@ -344,19 +353,19 @@ class JCLCommandManager(CommandManager):
return (self.add_form_select_user_jid(command_node, lang_class), [])
def select_accounts_step_2(self, info_query, session_context,
command_node, lang_class):
command_node, lang_class, format_as_xml=True):
self.__logger.debug("Executing select_accounts step 2")
self.add_actions(command_node, [ACTION_PREVIOUS, ACTION_COMPLETE], 1)
return (self.add_form_select_accounts(session_context, command_node,
lang_class),
lang_class, format_as_xml),
[])
def select_account_step_2(self, info_query, session_context,
command_node, lang_class):
command_node, lang_class, format_as_xml=True):
self.__logger.debug("Executing select_account step 2")
self.add_actions(command_node, [ACTION_PREVIOUS, ACTION_COMPLETE], 1)
return (self.add_form_select_account(session_context, command_node,
lang_class),
lang_class, format_as_xml),
[])
def execute_list_1(self, info_query, session_context,
@@ -432,7 +441,7 @@ class JCLCommandManager(CommandManager):
self.__logger.debug("Executing command 'delete-user' step 3")
result = []
for account_name in session_context["account_names"]:
name, user_jid = account_name.split("/", 1)[:2]
name, user_jid = self.get_name_and_jid(account_name)
result += self.account_manager.remove_account_from_name(user_jid,
name)
command_node.setProp("status", STATUS_COMPLETED)
@@ -454,7 +463,7 @@ class JCLCommandManager(CommandManager):
self.__logger.debug("Executing command 'disable-user' step 3")
result = []
for account_name in session_context["account_names"]:
name, user_jid = account_name.split("/", 1)[:2]
name, user_jid = self.get_name_and_jid(account_name)
_account = account.get_account(user_jid, name)
_account.enabled = False
command_node.setProp("status", STATUS_COMPLETED)
@@ -476,7 +485,7 @@ class JCLCommandManager(CommandManager):
self.__logger.debug("Executing command 'reenable-user' step 3")
result = []
for account_name in session_context["account_names"]:
name, user_jid = account_name.split("/", 1)[:2]
name, user_jid = self.get_name_and_jid(account_name)
_account = account.get_account(user_jid, name)
_account.enabled = True
command_node.setProp("status", STATUS_COMPLETED)
@@ -498,7 +507,7 @@ class JCLCommandManager(CommandManager):
self.__logger.debug("Executing command 'end-user-session' step 3")
result = []
for account_name in session_context["account_names"]:
name, user_jid = account_name.split("/", 1)[:2]
name, user_jid = self.get_name_and_jid(account_name)
_account = account.get_account(user_jid, name)
result += self.component.account_manager.send_presence_unavailable(
_account)
@@ -515,7 +524,7 @@ class JCLCommandManager(CommandManager):
result_form.add_field(field_type="hidden",
name="FORM_TYPE",
value="http://jabber.org/protocol/admin")
name, user_jid = session_context["account_name"][0].split("/", 1)[:2]
name, user_jid = self.get_name_and_jid(session_context["account_name"][0])
_account = account.get_account(user_jid, name)
result_form.fields.append(FieldNoType(name="accountjids",
value=user_jid))
@@ -533,17 +542,19 @@ class JCLCommandManager(CommandManager):
(result_form, result) = self.select_account_step_2(info_query,
session_context,
command_node,
lang_class)
lang_class,
False)
result_form.add_field(field_type="text-private",
name="password",
label=lang_class.field_password)
result_form.as_xml(command_node)
return (result_form, result)
def execute_change_user_password_3(self, info_query, session_context,
command_node, lang_class):
self.__logger.debug("Executing command 'change-user-password' step 2")
_account = account.get_account(session_context["user_jid"][0],
session_context["account_name"][0])
name, user_jid = self.get_name_and_jid(session_context["account_name"][0])
_account = account.get_account(user_jid, name)
_account.password = session_context["password"][0]
command_node.setProp("status", STATUS_COMPLETED)
return (None, [])
@@ -589,9 +600,8 @@ class JCLCommandManager(CommandManager):
result_form.add_field(field_type="hidden",
name="FORM_TYPE",
value="http://jabber.org/protocol/admin")
user_jid = session_context["user_jid"][0]
_account = account.get_account(user_jid,
session_context["account_name"][0])
name, user_jid = self.get_name_and_jid(session_context["account_name"][0])
_account = account.get_account(user_jid, name)
result_form.fields.append(FieldNoType(name="user_jid",
value=user_jid))
result_form.fields.append(FieldNoType(name="lastlogin",

View File

@@ -241,7 +241,7 @@ class JCLComponent(Component, object):
def send_stanzas(self, stanzas):
"""Send given stanza list"""
self.__logger.debug("Sending responses")
self.__logger.debug("Sending responses: " + str(stanzas))
if stanzas is not None:
for stanza in stanzas:
self.stream.send(stanza)

View File

@@ -1275,6 +1275,10 @@ class JCLCommandManager_TestCase(JCLTestCase):
context_session = self.command_manager.sessions[session_id][1]
self.assertEquals(context_session["user_jid"],
["test1@test.com"])
fields = result[0].xpath_eval("c:command/data:x/data:field",
{"c": "http://jabber.org/protocol/commands",
"data": "jabber:x:data"})
self.assertEquals(len(fields), 2)
# Third step
info_query = Iq(stanza_type="set",
@@ -1287,7 +1291,7 @@ class JCLCommandManager_TestCase(JCLTestCase):
submit_form = Form(xmlnode_or_type="submit")
submit_form.add_field(field_type="list-single",
name="account_name",
value="account11")
value="account11/test1@test.com")
submit_form.add_field(field_type="text-private",
name="password",
value="pass2")
@@ -1301,7 +1305,7 @@ class JCLCommandManager_TestCase(JCLTestCase):
self.assertEquals(xml_command.prop("sessionid"), session_id)
self.__check_actions(result[0])
self.assertEquals(context_session["account_name"],
["account11"])
["account11/test1@test.com"])
self.assertEquals(context_session["password"],
["pass2"])
self.assertEquals(account11.password, "pass2")
@@ -1478,7 +1482,7 @@ class JCLCommandManager_TestCase(JCLTestCase):
submit_form = Form(xmlnode_or_type="submit")
submit_form.add_field(field_type="list-single",
name="account_name",
value="account11")
value="account11/test1@test.com")
submit_form.as_xml(command_node)
result = self.command_manager.apply_command_action(info_query,
"http://jabber.org/protocol/admin#get-user-lastlogin",
@@ -1489,7 +1493,7 @@ class JCLCommandManager_TestCase(JCLTestCase):
self.assertEquals(xml_command.prop("sessionid"), session_id)
self.__check_actions(result[0])
self.assertEquals(context_session["account_name"],
["account11"])
["account11/test1@test.com"])
fields = result[0].xpath_eval("c:command/data:x/data:field",
{"c": "http://jabber.org/protocol/commands",
"data": "jabber:x:data"})

View File

@@ -737,7 +737,7 @@ class JCLComponent_TestCase(JCLTestCase):
to_jid="jcl.test.com")
disco_items = self.comp.disco_get_items("http://jabber.org/protocol/commands",
info_query)
self.assertEquals(len(disco_items.get_items()), 36)
self.assertEquals(len(disco_items.get_items()), 29)
item = disco_items.get_items()[0]
self.assertEquals(item.get_node(), "list")
self.assertEquals(item.get_name(), Lang.en.command_list)

View File

@@ -187,9 +187,12 @@ def get_accounts_count(bare_user_jid, account_class=Account):
model.db_disconnect()
return accounts_count
def get_all_accounts_count(account_class=Account):
def get_all_accounts_count(account_class=Account, filter=None):
model.db_connect()
accounts_count = account_class.select().count()
if filter is None:
accounts_count = account_class.select().count()
else:
accounts_count = account_class.select(filter).count()
model.db_disconnect()
return accounts_count