'change-user-password' ad-hoc command form was not complete
darcs-hash:20070808160758-86b55-d58f617297011e200cef0886f936588d19c7720a.gz
This commit is contained in:
@@ -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)
|
||||
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,6 +334,7 @@ class JCLCommandManager(CommandManager):
|
||||
label="Account") # TODO
|
||||
self.__add_accounts_to_field(session_context["user_jid"],
|
||||
field, lang_class)
|
||||
if format_as_xml:
|
||||
result_form.as_xml(command_node)
|
||||
return result_form
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"})
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
if filter is None:
|
||||
accounts_count = account_class.select().count()
|
||||
else:
|
||||
accounts_count = account_class.select(filter).count()
|
||||
model.db_disconnect()
|
||||
return accounts_count
|
||||
|
||||
|
||||
Reference in New Issue
Block a user