'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"""
|
"""Implement default set of Ad-Hoc commands"""
|
||||||
|
|
||||||
def __init__(self, component=None, account_manager=None):
|
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)
|
CommandManager.__init__(self, component, account_manager)
|
||||||
self.__logger = logging.getLogger("jcl.jabber.command.JCLCommandManager")
|
self.__logger = logging.getLogger("jcl.jabber.command.JCLCommandManager")
|
||||||
self.commands.extend(["list",
|
self.commands.extend(["list",
|
||||||
@@ -236,13 +246,6 @@ class JCLCommandManager(CommandManager):
|
|||||||
"http://jabber.org/protocol/admin#change-user-password",
|
"http://jabber.org/protocol/admin#change-user-password",
|
||||||
"http://jabber.org/protocol/admin#get-user-roster",
|
"http://jabber.org/protocol/admin#get-user-roster",
|
||||||
"http://jabber.org/protocol/admin#get-user-lastlogin",
|
"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-registered-users-num",
|
||||||
"http://jabber.org/protocol/admin#get-disabled-users-num",
|
"http://jabber.org/protocol/admin#get-disabled-users-num",
|
||||||
"http://jabber.org/protocol/admin#get-online-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#restart",
|
||||||
"http://jabber.org/protocol/admin#shutdown"])
|
"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
|
## Reusable steps
|
||||||
def add_form_select_user_jids(self, command_node, lang_class):
|
def add_form_select_user_jids(self, command_node, lang_class):
|
||||||
result_form = Form(xmlnode_or_type="result",
|
result_form = Form(xmlnode_or_type="result",
|
||||||
@@ -298,7 +304,7 @@ class JCLCommandManager(CommandManager):
|
|||||||
|
|
||||||
def add_form_select_accounts(self, session_context,
|
def add_form_select_accounts(self, session_context,
|
||||||
command_node, lang_class,
|
command_node, lang_class,
|
||||||
filter=None):
|
filter=None, format_as_xml=True):
|
||||||
"""
|
"""
|
||||||
Add a form to select accounts for user JIDs contained in
|
Add a form to select accounts for user JIDs contained in
|
||||||
session_context[\"user_jids\"]
|
session_context[\"user_jids\"]
|
||||||
@@ -310,11 +316,13 @@ class JCLCommandManager(CommandManager):
|
|||||||
label="Account") # TODO
|
label="Account") # TODO
|
||||||
self.__add_accounts_to_field(session_context["user_jids"],
|
self.__add_accounts_to_field(session_context["user_jids"],
|
||||||
field, lang_class, filter)
|
field, lang_class, filter)
|
||||||
result_form.as_xml(command_node)
|
if format_as_xml:
|
||||||
|
result_form.as_xml(command_node)
|
||||||
return result_form
|
return result_form
|
||||||
|
|
||||||
def add_form_select_account(self, session_context,
|
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
|
Add a form to select account for user JIDs contained in
|
||||||
session_context[\"user_jids\"]
|
session_context[\"user_jids\"]
|
||||||
@@ -326,7 +334,8 @@ class JCLCommandManager(CommandManager):
|
|||||||
label="Account") # TODO
|
label="Account") # TODO
|
||||||
self.__add_accounts_to_field(session_context["user_jid"],
|
self.__add_accounts_to_field(session_context["user_jid"],
|
||||||
field, lang_class)
|
field, lang_class)
|
||||||
result_form.as_xml(command_node)
|
if format_as_xml:
|
||||||
|
result_form.as_xml(command_node)
|
||||||
return result_form
|
return result_form
|
||||||
|
|
||||||
def select_user_jids_step_1(self, info_query, session_context,
|
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), [])
|
return (self.add_form_select_user_jid(command_node, lang_class), [])
|
||||||
|
|
||||||
def select_accounts_step_2(self, info_query, session_context,
|
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.__logger.debug("Executing select_accounts step 2")
|
||||||
self.add_actions(command_node, [ACTION_PREVIOUS, ACTION_COMPLETE], 1)
|
self.add_actions(command_node, [ACTION_PREVIOUS, ACTION_COMPLETE], 1)
|
||||||
return (self.add_form_select_accounts(session_context, command_node,
|
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,
|
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.__logger.debug("Executing select_account step 2")
|
||||||
self.add_actions(command_node, [ACTION_PREVIOUS, ACTION_COMPLETE], 1)
|
self.add_actions(command_node, [ACTION_PREVIOUS, ACTION_COMPLETE], 1)
|
||||||
return (self.add_form_select_account(session_context, command_node,
|
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,
|
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")
|
self.__logger.debug("Executing command 'delete-user' step 3")
|
||||||
result = []
|
result = []
|
||||||
for account_name in session_context["account_names"]:
|
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,
|
result += self.account_manager.remove_account_from_name(user_jid,
|
||||||
name)
|
name)
|
||||||
command_node.setProp("status", STATUS_COMPLETED)
|
command_node.setProp("status", STATUS_COMPLETED)
|
||||||
@@ -454,7 +463,7 @@ class JCLCommandManager(CommandManager):
|
|||||||
self.__logger.debug("Executing command 'disable-user' step 3")
|
self.__logger.debug("Executing command 'disable-user' step 3")
|
||||||
result = []
|
result = []
|
||||||
for account_name in session_context["account_names"]:
|
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 = account.get_account(user_jid, name)
|
||||||
_account.enabled = False
|
_account.enabled = False
|
||||||
command_node.setProp("status", STATUS_COMPLETED)
|
command_node.setProp("status", STATUS_COMPLETED)
|
||||||
@@ -476,7 +485,7 @@ class JCLCommandManager(CommandManager):
|
|||||||
self.__logger.debug("Executing command 'reenable-user' step 3")
|
self.__logger.debug("Executing command 'reenable-user' step 3")
|
||||||
result = []
|
result = []
|
||||||
for account_name in session_context["account_names"]:
|
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 = account.get_account(user_jid, name)
|
||||||
_account.enabled = True
|
_account.enabled = True
|
||||||
command_node.setProp("status", STATUS_COMPLETED)
|
command_node.setProp("status", STATUS_COMPLETED)
|
||||||
@@ -498,7 +507,7 @@ class JCLCommandManager(CommandManager):
|
|||||||
self.__logger.debug("Executing command 'end-user-session' step 3")
|
self.__logger.debug("Executing command 'end-user-session' step 3")
|
||||||
result = []
|
result = []
|
||||||
for account_name in session_context["account_names"]:
|
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 = account.get_account(user_jid, name)
|
||||||
result += self.component.account_manager.send_presence_unavailable(
|
result += self.component.account_manager.send_presence_unavailable(
|
||||||
_account)
|
_account)
|
||||||
@@ -515,7 +524,7 @@ class JCLCommandManager(CommandManager):
|
|||||||
result_form.add_field(field_type="hidden",
|
result_form.add_field(field_type="hidden",
|
||||||
name="FORM_TYPE",
|
name="FORM_TYPE",
|
||||||
value="http://jabber.org/protocol/admin")
|
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)
|
_account = account.get_account(user_jid, name)
|
||||||
result_form.fields.append(FieldNoType(name="accountjids",
|
result_form.fields.append(FieldNoType(name="accountjids",
|
||||||
value=user_jid))
|
value=user_jid))
|
||||||
@@ -533,17 +542,19 @@ class JCLCommandManager(CommandManager):
|
|||||||
(result_form, result) = self.select_account_step_2(info_query,
|
(result_form, result) = self.select_account_step_2(info_query,
|
||||||
session_context,
|
session_context,
|
||||||
command_node,
|
command_node,
|
||||||
lang_class)
|
lang_class,
|
||||||
|
False)
|
||||||
result_form.add_field(field_type="text-private",
|
result_form.add_field(field_type="text-private",
|
||||||
name="password",
|
name="password",
|
||||||
label=lang_class.field_password)
|
label=lang_class.field_password)
|
||||||
|
result_form.as_xml(command_node)
|
||||||
return (result_form, result)
|
return (result_form, result)
|
||||||
|
|
||||||
def execute_change_user_password_3(self, info_query, session_context,
|
def execute_change_user_password_3(self, info_query, session_context,
|
||||||
command_node, lang_class):
|
command_node, lang_class):
|
||||||
self.__logger.debug("Executing command 'change-user-password' step 2")
|
self.__logger.debug("Executing command 'change-user-password' step 2")
|
||||||
_account = account.get_account(session_context["user_jid"][0],
|
name, user_jid = self.get_name_and_jid(session_context["account_name"][0])
|
||||||
session_context["account_name"][0])
|
_account = account.get_account(user_jid, name)
|
||||||
_account.password = session_context["password"][0]
|
_account.password = session_context["password"][0]
|
||||||
command_node.setProp("status", STATUS_COMPLETED)
|
command_node.setProp("status", STATUS_COMPLETED)
|
||||||
return (None, [])
|
return (None, [])
|
||||||
@@ -589,9 +600,8 @@ class JCLCommandManager(CommandManager):
|
|||||||
result_form.add_field(field_type="hidden",
|
result_form.add_field(field_type="hidden",
|
||||||
name="FORM_TYPE",
|
name="FORM_TYPE",
|
||||||
value="http://jabber.org/protocol/admin")
|
value="http://jabber.org/protocol/admin")
|
||||||
user_jid = session_context["user_jid"][0]
|
name, user_jid = self.get_name_and_jid(session_context["account_name"][0])
|
||||||
_account = account.get_account(user_jid,
|
_account = account.get_account(user_jid, name)
|
||||||
session_context["account_name"][0])
|
|
||||||
result_form.fields.append(FieldNoType(name="user_jid",
|
result_form.fields.append(FieldNoType(name="user_jid",
|
||||||
value=user_jid))
|
value=user_jid))
|
||||||
result_form.fields.append(FieldNoType(name="lastlogin",
|
result_form.fields.append(FieldNoType(name="lastlogin",
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ class JCLComponent(Component, object):
|
|||||||
|
|
||||||
def send_stanzas(self, stanzas):
|
def send_stanzas(self, stanzas):
|
||||||
"""Send given stanza list"""
|
"""Send given stanza list"""
|
||||||
self.__logger.debug("Sending responses")
|
self.__logger.debug("Sending responses: " + str(stanzas))
|
||||||
if stanzas is not None:
|
if stanzas is not None:
|
||||||
for stanza in stanzas:
|
for stanza in stanzas:
|
||||||
self.stream.send(stanza)
|
self.stream.send(stanza)
|
||||||
|
|||||||
@@ -1275,6 +1275,10 @@ class JCLCommandManager_TestCase(JCLTestCase):
|
|||||||
context_session = self.command_manager.sessions[session_id][1]
|
context_session = self.command_manager.sessions[session_id][1]
|
||||||
self.assertEquals(context_session["user_jid"],
|
self.assertEquals(context_session["user_jid"],
|
||||||
["test1@test.com"])
|
["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
|
# Third step
|
||||||
info_query = Iq(stanza_type="set",
|
info_query = Iq(stanza_type="set",
|
||||||
@@ -1287,7 +1291,7 @@ class JCLCommandManager_TestCase(JCLTestCase):
|
|||||||
submit_form = Form(xmlnode_or_type="submit")
|
submit_form = Form(xmlnode_or_type="submit")
|
||||||
submit_form.add_field(field_type="list-single",
|
submit_form.add_field(field_type="list-single",
|
||||||
name="account_name",
|
name="account_name",
|
||||||
value="account11")
|
value="account11/test1@test.com")
|
||||||
submit_form.add_field(field_type="text-private",
|
submit_form.add_field(field_type="text-private",
|
||||||
name="password",
|
name="password",
|
||||||
value="pass2")
|
value="pass2")
|
||||||
@@ -1301,7 +1305,7 @@ class JCLCommandManager_TestCase(JCLTestCase):
|
|||||||
self.assertEquals(xml_command.prop("sessionid"), session_id)
|
self.assertEquals(xml_command.prop("sessionid"), session_id)
|
||||||
self.__check_actions(result[0])
|
self.__check_actions(result[0])
|
||||||
self.assertEquals(context_session["account_name"],
|
self.assertEquals(context_session["account_name"],
|
||||||
["account11"])
|
["account11/test1@test.com"])
|
||||||
self.assertEquals(context_session["password"],
|
self.assertEquals(context_session["password"],
|
||||||
["pass2"])
|
["pass2"])
|
||||||
self.assertEquals(account11.password, "pass2")
|
self.assertEquals(account11.password, "pass2")
|
||||||
@@ -1478,7 +1482,7 @@ class JCLCommandManager_TestCase(JCLTestCase):
|
|||||||
submit_form = Form(xmlnode_or_type="submit")
|
submit_form = Form(xmlnode_or_type="submit")
|
||||||
submit_form.add_field(field_type="list-single",
|
submit_form.add_field(field_type="list-single",
|
||||||
name="account_name",
|
name="account_name",
|
||||||
value="account11")
|
value="account11/test1@test.com")
|
||||||
submit_form.as_xml(command_node)
|
submit_form.as_xml(command_node)
|
||||||
result = self.command_manager.apply_command_action(info_query,
|
result = self.command_manager.apply_command_action(info_query,
|
||||||
"http://jabber.org/protocol/admin#get-user-lastlogin",
|
"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.assertEquals(xml_command.prop("sessionid"), session_id)
|
||||||
self.__check_actions(result[0])
|
self.__check_actions(result[0])
|
||||||
self.assertEquals(context_session["account_name"],
|
self.assertEquals(context_session["account_name"],
|
||||||
["account11"])
|
["account11/test1@test.com"])
|
||||||
fields = result[0].xpath_eval("c:command/data:x/data:field",
|
fields = result[0].xpath_eval("c:command/data:x/data:field",
|
||||||
{"c": "http://jabber.org/protocol/commands",
|
{"c": "http://jabber.org/protocol/commands",
|
||||||
"data": "jabber:x:data"})
|
"data": "jabber:x:data"})
|
||||||
|
|||||||
@@ -737,7 +737,7 @@ class JCLComponent_TestCase(JCLTestCase):
|
|||||||
to_jid="jcl.test.com")
|
to_jid="jcl.test.com")
|
||||||
disco_items = self.comp.disco_get_items("http://jabber.org/protocol/commands",
|
disco_items = self.comp.disco_get_items("http://jabber.org/protocol/commands",
|
||||||
info_query)
|
info_query)
|
||||||
self.assertEquals(len(disco_items.get_items()), 36)
|
self.assertEquals(len(disco_items.get_items()), 29)
|
||||||
item = disco_items.get_items()[0]
|
item = disco_items.get_items()[0]
|
||||||
self.assertEquals(item.get_node(), "list")
|
self.assertEquals(item.get_node(), "list")
|
||||||
self.assertEquals(item.get_name(), Lang.en.command_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()
|
model.db_disconnect()
|
||||||
return accounts_count
|
return accounts_count
|
||||||
|
|
||||||
def get_all_accounts_count(account_class=Account):
|
def get_all_accounts_count(account_class=Account, filter=None):
|
||||||
model.db_connect()
|
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()
|
model.db_disconnect()
|
||||||
return accounts_count
|
return accounts_count
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user