From 6c09c4dc9d3330aa024dc23557ab85a4ae8d0eca Mon Sep 17 00:00:00 2001 From: David Rousselie Date: Wed, 12 Sep 2007 18:30:42 +0200 Subject: [PATCH] Localize all ad-hoc commands darcs-hash:20070912163042-86b55-8dbd50041b4ae85bdb5afbd0c979907afb2f3d28.gz --- src/jcl/jabber/command.py | 353 +++++++++++++++++++++++--------- src/jcl/jabber/tests/command.py | 33 +-- src/jcl/lang.py | 219 +++++++++++++++++++- src/jcl/tests/lang.py | 108 +++++++++- 4 files changed, 592 insertions(+), 121 deletions(-) diff --git a/src/jcl/jabber/command.py b/src/jcl/jabber/command.py index 38d4af8..e0392c6 100644 --- a/src/jcl/jabber/command.py +++ b/src/jcl/jabber/command.py @@ -283,21 +283,27 @@ class JCLCommandManager(CommandManager): return mixed_name_and_jid.split("/", 1)[:2] ## Reusable steps - def add_form_select_user_jids(self, command_node, lang_class): + def add_form_select_users_jids(self, command_node, + form_title, form_desc, + field_users_jids_label): result_form = Form(xmlnode_or_type="result", - title="TODO") + title=form_title, + instructions=form_desc) result_form.add_field(name="user_jids", field_type="jid-multi", - label=lang_class.field_user_jid) + label=field_users_jids_label) result_form.as_xml(command_node) return result_form - def add_form_select_user_jid(self, command_node, lang_class): + def add_form_select_user_jid(self, command_node, + form_title, form_desc, + field_user_jid_label): result_form = Form(xmlnode_or_type="result", - title="TODO") + title=form_title, + instructions=form_desc) result_form.add_field(name="user_jid", field_type="jid-single", - label=lang_class.field_user_jid) + label=field_user_jid_label) result_form.as_xml(command_node) return result_form @@ -317,16 +323,18 @@ class JCLCommandManager(CommandManager): def add_form_select_accounts(self, session_context, command_node, lang_class, + form_title, form_desc, filter=None, format_as_xml=True): """ Add a form to select accounts for user JIDs contained in session_context[\"user_jids\"] """ result_form = Form(xmlnode_or_type="result", - title="TODO") + title=form_title, + instructions=form_desc) field = result_form.add_field(name="account_names", field_type="list-multi", - label="Account") # TODO + label=lang_class.field_accounts) self.__add_accounts_to_field(session_context["user_jids"], field, lang_class, filter) if format_as_xml: @@ -335,16 +343,18 @@ class JCLCommandManager(CommandManager): def add_form_select_account(self, session_context, command_node, lang_class, + form_title, form_desc, format_as_xml=True): """ Add a form to select account for user JIDs contained in session_context[\"user_jids\"] """ result_form = Form(xmlnode_or_type="result", - title="TODO") + title=form_title, + instructions=form_desc) field = result_form.add_field(name="account_name", field_type="list-single", - label="Account") # TODO + label=lang_class.field_account) self.__add_accounts_to_field(session_context["user_jid"], field, lang_class) if format_as_xml: @@ -359,14 +369,14 @@ class JCLCommandManager(CommandManager): value="http://jabber.org/protocol/admin") max_items_field = result_form.add_field(name="max_items", field_type="list-single", - label="TODO") + label=lang_class.field_max_items) for value in ["25", "50", "75", "100", "150", "200"]: max_items_field.add_option(label=value, values=[value]) result_form.as_xml(command_node) return (result_form, []) - def add_form_list_accounts(self, command_node, lang_class, + def add_form_list_accounts(self, command_node, var_name, var_label, filter=None, limit=None): result_form = Form(xmlnode_or_type="result") @@ -385,45 +395,64 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (result_form, []) - def select_user_jids_step_1(self, info_query, session_context, - command_node, lang_class): - self.__logger.debug("Executing select_user_jids step 1") + ########################################################################### + # Reusable steps + ########################################################################### + def select_users_jids_step_1(self, session_context, + command_node, lang_class, form_title, + form_desc): + self.__logger.debug("Executing select_users_jids step 1") self.add_actions(command_node, [ACTION_NEXT]) - return (self.add_form_select_user_jids(command_node, lang_class), []) + return (self.add_form_select_users_jids(\ + command_node, form_title, form_desc, + lang_class.field_users_jids), []) - def select_user_jid_step_1(self, info_query, session_context, - command_node, lang_class, - actions=[ACTION_NEXT], - default_action=0): + def select_user_jid_step(self, session_context, + command_node, lang_class, + form_title, form_desc, + actions=[ACTION_NEXT], + default_action=0): self.__logger.debug("Executing select_user_jid step 1") self.add_actions(command_node, actions, default_action) - return (self.add_form_select_user_jid(command_node, lang_class), []) + return (self.add_form_select_user_jid(\ + command_node, form_title, form_desc, + lang_class.field_user_jid), []) - def select_accounts_step_2(self, info_query, session_context, - command_node, lang_class, format_as_xml=True): + def select_accounts_step_2(self, session_context, + command_node, lang_class, + form_title, form_desc, + 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, format_as_xml), + lang_class, form_title, form_desc, + format_as_xml=format_as_xml), []) - def select_account_step_2(self, info_query, session_context, - command_node, lang_class, format_as_xml=True): + def select_account_step_2(self, session_context, + command_node, lang_class, + form_title, form_desc, + 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, format_as_xml), + lang_class, form_title, form_desc, + format_as_xml=format_as_xml), []) + ########################################################################### + # add-user command + ########################################################################### def execute_add_user_1(self, info_query, session_context, command_node, lang_class): self.__logger.debug("Executing command 'add-user' step 1") self.add_actions(command_node, [ACTION_NEXT]) result_form = Form(xmlnode_or_type="result", - title=lang_class.select_account_type) + title=lang_class.command_add_user, + instructions=lang_class.command_add_user_1_description) field = result_form.add_field(name="account_type", field_type="list-single", - label="Account type") + label=lang_class.field_account_type) for (account_type, type_label) in \ self.component.account_manager.list_account_types(lang_class): field.add_option(label=type_label, @@ -463,8 +492,22 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, to_send) - execute_delete_user_1 = select_user_jids_step_1 - execute_delete_user_2 = select_accounts_step_2 + ########################################################################### + # delete-user command + ########################################################################### + def execute_delete_user_1(self, info_query, session_context, + command_node, lang_class): + return self.select_users_jids_step_1(\ + session_context, command_node, lang_class, + lang_class.command_delete_user, + lang_class.command_delete_user_1_description) + + def execute_delete_user_2(self, info_query, session_context, + command_node, lang_class): + return self.select_accounts_step_2(\ + session_context, command_node, lang_class, + lang_class.command_delete_user, + lang_class.command_delete_user_2_description) def execute_delete_user_3(self, info_query, session_context, command_node, lang_class): @@ -477,15 +520,25 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, result) - execute_disable_user_1 = select_user_jids_step_1 + ########################################################################### + # disable-user command + ########################################################################### + def execute_disable_user_1(self, info_query, session_context, + command_node, lang_class): + return self.select_users_jids_step_1(\ + session_context, command_node, lang_class, + lang_class.command_disable_user, + lang_class.command_disable_user_1_description) def execute_disable_user_2(self, info_query, session_context, command_node, lang_class): self.__logger.debug("Executing 'disable-user' step 2") self.add_actions(command_node, [ACTION_PREVIOUS, ACTION_COMPLETE], 1) - return (self.add_form_select_accounts(session_context, command_node, - lang_class, - Account.q.enabled==True), + return (self.add_form_select_accounts(\ + session_context, command_node, lang_class, + lang_class.command_disable_user, + lang_class.command_disable_user_2_description, + filter=Account.q.enabled==True), []) def execute_disable_user_3(self, info_query, session_context, @@ -499,15 +552,25 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, result) - execute_reenable_user_1 = select_user_jids_step_1 + ########################################################################### + # reenable-user command + ########################################################################### + def execute_reenable_user_1(self, info_query, session_context, + command_node, lang_class): + return self.select_users_jids_step_1(\ + session_context, command_node, lang_class, + lang_class.command_reenable_user, + lang_class.command_reenable_user_1_description) def execute_reenable_user_2(self, info_query, session_context, command_node, lang_class): self.__logger.debug("Executing 'reenable-user' step 2") self.add_actions(command_node, [ACTION_PREVIOUS, ACTION_COMPLETE], 1) - return (self.add_form_select_accounts(session_context, command_node, - lang_class, - Account.q.enabled==False), + return (self.add_form_select_accounts(\ + session_context, command_node, lang_class, + lang_class.command_reenable_user, + lang_class.command_reenable_user_2_description, + filter=Account.q.enabled==False), []) def execute_reenable_user_3(self, info_query, session_context, @@ -521,15 +584,25 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, result) - execute_end_user_session_1 = select_user_jids_step_1 + ########################################################################### + # end-user-session command + ########################################################################### + def execute_end_user_session_1(self, info_query, session_context, + command_node, lang_class): + return self.select_users_jids_step_1(\ + session_context, command_node, lang_class, + lang_class.command_end_user_session, + lang_class.command_end_user_session_1_description) def execute_end_user_session_2(self, info_query, session_context, command_node, lang_class): self.__logger.debug("Executing 'end-user-session' step 2") self.add_actions(command_node, [ACTION_PREVIOUS, ACTION_COMPLETE], 1) - return (self.add_form_select_accounts(session_context, command_node, - lang_class, - Account.q._status != account.OFFLINE), + return (self.add_form_select_accounts(\ + session_context, command_node, lang_class, + lang_class.command_end_user_session, + lang_class.command_end_user_session_2_description, + filter=Account.q._status != account.OFFLINE), []) def execute_end_user_session_3(self, info_query, session_context, @@ -544,8 +617,22 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, result) - execute_get_user_password_1 = select_user_jid_step_1 - execute_get_user_password_2 = select_account_step_2 + ########################################################################### + # get-user-password command + ########################################################################### + def execute_get_user_password_1(self, info_query, session_context, + command_node, lang_class): + return self.select_user_jid_step(\ + session_context, command_node, lang_class, + lang_class.command_get_user_password, + lang_class.command_get_user_password_1_description) + + def execute_get_user_password_2(self, info_query, session_context, + command_node, lang_class): + return self.select_account_step_2(\ + session_context, command_node, lang_class, + lang_class.command_get_user_password, + lang_class.command_get_user_password_2_description) def execute_get_user_password_3(self, info_query, session_context, command_node, lang_class): @@ -564,16 +651,24 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (result_form, []) - execute_change_user_password_1 = select_user_jid_step_1 + ########################################################################### + # change-user-password command + ########################################################################### + def execute_change_user_password_1(self, info_query, session_context, + command_node, lang_class): + return self.select_user_jid_step(\ + session_context, command_node, lang_class, + lang_class.command_change_user_password, + lang_class.command_change_user_password_1_description) def execute_change_user_password_2(self, info_query, session_context, command_node, lang_class): self.__logger.debug("Executing command 'change-user-password' step 2") - (result_form, result) = self.select_account_step_2(info_query, - session_context, - command_node, - lang_class, - False) + (result_form, result) = self.select_account_step_2(\ + session_context, command_node, lang_class, + lang_class.command_change_user_password, + lang_class.command_change_user_password_2_description, + False) result_form.add_field(field_type="text-private", name="password", label=lang_class.field_password) @@ -589,13 +684,16 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, []) + ########################################################################### + # get-user-roster command + ########################################################################### def execute_get_user_roster_1(self, info_query, session_context, command_node, lang_class): - (result_form, result) = self.select_user_jid_step_1(info_query, - session_context, - command_node, - lang_class, - actions=[ACTION_COMPLETE]) + (result_form, result) = self.select_user_jid_step(\ + session_context, command_node, lang_class, + lang_class.command_get_user_roster, + lang_class.command_get_user_roster_1_description, + actions=[ACTION_COMPLETE]) return (result_form, result) def execute_get_user_roster_2(self, info_query, session_context, @@ -607,7 +705,8 @@ class JCLCommandManager(CommandManager): value="http://jabber.org/protocol/admin") user_jid = session_context["user_jid"][0] result_form.fields.append(FieldNoType(name="user_jid", - value=user_jid)) + value=user_jid, + label=lang_class.field_user_jid)) result_form.as_xml(command_node) x_form = command_node.children query = x_form.newChild(None, "query", None) @@ -620,8 +719,22 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (result_form, []) - execute_get_user_lastlogin_1 = select_user_jid_step_1 - execute_get_user_lastlogin_2 = select_account_step_2 + ########################################################################### + # get-user-lastlogin command + ########################################################################### + def execute_get_user_lastlogin_1(self, info_query, session_context, + command_node, lang_class): + return self.select_user_jid_step(\ + session_context, command_node, lang_class, + lang_class.command_get_user_lastlogin, + lang_class.command_get_user_lastlogin_1_description) + + def execute_get_user_lastlogin_2(self, info_query, session_context, + command_node, lang_class): + return self.select_account_step_2(\ + session_context, command_node, lang_class, + lang_class.command_get_user_lastlogin, + lang_class.command_get_user_lastlogin_2_description) def execute_get_user_lastlogin_3(self, info_query, session_context, command_node, lang_class): @@ -633,13 +746,17 @@ class JCLCommandManager(CommandManager): 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)) + value=user_jid, + label=lang_class.field_user_jid)) result_form.fields.append(FieldNoType(name="lastlogin", value=_account.lastlogin)) result_form.as_xml(command_node) command_node.setProp("status", STATUS_COMPLETED) return (result_form, []) + ########################################################################### + # get-registered-users-num command + ########################################################################### def execute_get_registered_users_num_1(self, info_query, session_context, command_node, lang_class): result_form = Form(xmlnode_or_type="result") @@ -648,12 +765,15 @@ class JCLCommandManager(CommandManager): value="http://jabber.org/protocol/admin") num_accounts = account.get_all_accounts_count() result_form.fields.append(FieldNoType(name="registeredusersnum", - label="TODO", + label=lang_class.field_registered_users_num, value=num_accounts)) result_form.as_xml(command_node) command_node.setProp("status", STATUS_COMPLETED) return (result_form, []) + ########################################################################### + # get-disabled-users-num command + ########################################################################### def execute_get_disabled_users_num_1(self, info_query, session_context, command_node, lang_class): result_form = Form(xmlnode_or_type="result") @@ -663,12 +783,15 @@ class JCLCommandManager(CommandManager): num_accounts = account.get_all_accounts_count(\ filter=(Account.q.enabled == False)) result_form.fields.append(FieldNoType(name="disabledusersnum", - label="TODO", + label=lang_class.field_disabled_users_num, value=num_accounts)) result_form.as_xml(command_node) command_node.setProp("status", STATUS_COMPLETED) return (result_form, []) + ########################################################################### + # get-online-users-num command + ########################################################################### def execute_get_online_users_num_1(self, info_query, session_context, command_node, lang_class): result_form = Form(xmlnode_or_type="result") @@ -678,34 +801,43 @@ class JCLCommandManager(CommandManager): num_accounts = account.get_all_accounts_count(\ filter=(Account.q._status != account.OFFLINE)) result_form.fields.append(FieldNoType(name="onlineusersnum", - label="TODO", + label=lang_class.field_online_users_num, value=num_accounts)) result_form.as_xml(command_node) command_node.setProp("status", STATUS_COMPLETED) return (result_form, []) + ########################################################################### + # get-registered-users-list command + ########################################################################### def execute_get_registered_users_list_1(self, info_query, session_context, command_node, lang_class): num_accounts = account.get_all_accounts_count() if num_accounts < 25: - return self.add_form_list_accounts(command_node, lang_class, - "registeredusers", "TODO") + return self.add_form_list_accounts(command_node, + "registeredusers", + lang_class.field_registered_users_list) else: return self.add_form_select_max(command_node, lang_class) def execute_get_registered_users_list_2(self, info_query, session_context, command_node, lang_class): limit = int(session_context["max_items"][0]) - return self.add_form_list_accounts(command_node, lang_class, - "registeredusers", "TODO", + return self.add_form_list_accounts(command_node, + "registeredusers", + lang_class.field_registered_users_list, limit=limit) + ########################################################################### + # get-disabled-users-list command + ########################################################################### def execute_get_disabled_users_list_1(self, info_query, session_context, command_node, lang_class): num_accounts = account.get_all_accounts_count() if num_accounts < 25: - return self.add_form_list_accounts(command_node, lang_class, - "disabledusers", "TODO", + return self.add_form_list_accounts(command_node, + "disabledusers", + lang_class.field_disabled_users_list, filter=(Account.q.enabled == False)) else: return self.add_form_select_max(command_node, lang_class) @@ -713,18 +845,22 @@ class JCLCommandManager(CommandManager): def execute_get_disabled_users_list_2(self, info_query, session_context, command_node, lang_class): limit = int(session_context["max_items"][0]) - return self.add_form_list_accounts(command_node, lang_class, - "disabledusers", "TODO", + return self.add_form_list_accounts(command_node, + "disabledusers", + lang_class.field_disabled_users_list, limit=limit, filter=(Account.q.enabled == False)) + ########################################################################### + # get-online-users-list command + ########################################################################### def execute_get_online_users_list_1(self, info_query, session_context, command_node, lang_class): num_accounts = account.get_all_accounts_count() if num_accounts < 25: return self.add_form_list_accounts(\ - command_node, lang_class, - "onlineusers", "TODO", + command_node, "onlineusers", + lang_class.field_online_users_list, filter=(Account.q._status != account.OFFLINE)) else: return self.add_form_select_max(command_node, lang_class) @@ -733,23 +869,26 @@ class JCLCommandManager(CommandManager): command_node, lang_class): limit = int(session_context["max_items"][0]) return self.add_form_list_accounts(\ - command_node, lang_class, - "onlineusers", "TODO", + command_node, "onlineusers", + lang_class.field_online_users_list, limit=limit, filter=(Account.q._status != account.OFFLINE)) + ########################################################################### + # announce command + ########################################################################### def execute_announce_1(self, info_query, session_context, command_node, lang_class): self.add_actions(command_node, [ACTION_NEXT]) result_form = Form(xmlnode_or_type="result", - title="TODO", - instructions="TODO") + title=lang_class.command_announce, + instructions=lang_class.command_announce_1_description) result_form.add_field(field_type="hidden", name="FORM_TYPE", value="http://jabber.org/protocol/admin") result_form.add_field(name="announcement", field_type="text-multi", - label="TODO", + label=lang_class.field_announcement, required=True) result_form.as_xml(command_node) return (result_form, []) @@ -770,18 +909,21 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, result) + ########################################################################### + # set-motd command + ########################################################################### def execute_set_motd_1(self, info_query, session_context, command_node, lang_class, motd=""): self.add_actions(command_node, [ACTION_NEXT]) result_form = Form(xmlnode_or_type="result", - title="TODO", - instructions="TODO") + title=lang_class.command_set_motd, + instructions=lang_class.command_set_motd_1_description) result_form.add_field(field_type="hidden", name="FORM_TYPE", value="http://jabber.org/protocol/admin") result_form.add_field(name="motd", field_type="text-multi", - label="TODO", + label=lang_class.field_motd, value=[motd], required=True) result_form.as_xml(command_node) @@ -812,6 +954,9 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, result) + ########################################################################### + # edit-motd command + ########################################################################### def execute_edit_motd_1(self, info_query, session_context, command_node, lang_class): return self.execute_set_motd_1(info_query, session_context, @@ -820,6 +965,9 @@ class JCLCommandManager(CommandManager): execute_edit_motd_2 = execute_set_motd_2 + ########################################################################### + # delete-motd command + ########################################################################### def execute_delete_motd_1(self, info_query, session_context, command_node, lang_class): self.__logger.debug("Executing command 'delete motd' step 1") @@ -827,19 +975,22 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, []) + ########################################################################### + # set-welcome command + ########################################################################### def execute_set_welcome_1(self, info_query, session_context, command_node, lang_class): self.add_actions(command_node, [ACTION_NEXT]) result_form = Form(xmlnode_or_type="result", - title="TODO", - instructions="TODO") + title=lang_class.command_set_welcome, + instructions=lang_class.command_set_welcome_1_description) result_form.add_field(field_type="hidden", name="FORM_TYPE", value="http://jabber.org/protocol/admin") welcome_message = self.component.get_welcome_message() result_form.add_field(name="welcome", field_type="text-multi", - label="TODO", + label=lang_class.field_welcome, value=[welcome_message], required=True) result_form.as_xml(command_node) @@ -853,6 +1004,9 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, []) + ########################################################################### + # delete-welcome command + ########################################################################### def execute_delete_welcome_1(self, info_query, session_context, command_node, lang_class): self.__logger.debug("Executing command 'delete welcome' step 1") @@ -860,19 +1014,22 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, []) + ########################################################################### + # edit-admin command + ########################################################################### def execute_edit_admin_1(self, info_query, session_context, command_node, lang_class): self.add_actions(command_node, [ACTION_NEXT]) result_form = Form(xmlnode_or_type="result", - title="TODO", - instructions="TODO") + title=lang_class.command_edit_admin, + instructions=lang_class.command_edit_admin_1_description) result_form.add_field(field_type="hidden", name="FORM_TYPE", value="http://jabber.org/protocol/admin") admins = self.component.get_admins() result_form.add_field(name="adminjids", field_type="jid-multi", - label="TODO", + label=lang_class.field_admin_jids, values=admins, required=True) result_form.as_xml(command_node) @@ -886,22 +1043,25 @@ class JCLCommandManager(CommandManager): command_node.setProp("status", STATUS_COMPLETED) return (None, []) + ########################################################################### + # restart command + ########################################################################### def execute_restart_1(self, info_query, session_context, command_node, lang_class): self.add_actions(command_node, [ACTION_NEXT]) result_form = Form(xmlnode_or_type="result", - title="TODO", - instructions="TODO") + title=lang_class.command_restart, + instructions=lang_class.command_restart_1_description) result_form.add_field(field_type="hidden", name="FORM_TYPE", value="http://jabber.org/protocol/admin") result_form.add_field(name="delay", field_type="list-multi", - label="TODO", + label=lang_class.field_restart_delay, required=True) result_form.add_field(name="announcement", field_type="text-multi", - label="TODO") + label=lang_class.field_announcement) result_form.as_xml(command_node) return (result_form, []) @@ -929,22 +1089,25 @@ class JCLCommandManager(CommandManager): restart_thread.start() return (None, result) + ########################################################################### + # shutdown command + ########################################################################### def execute_shutdown_1(self, info_query, session_context, command_node, lang_class): self.add_actions(command_node, [ACTION_NEXT]) result_form = Form(xmlnode_or_type="result", - title="TODO", - instructions="TODO") + title=lang_class.command_shutdown, + instructions=lang_class.command_shutdown_1_description) result_form.add_field(field_type="hidden", name="FORM_TYPE", value="http://jabber.org/protocol/admin") result_form.add_field(name="delay", field_type="list-multi", - label="TODO", + label=lang_class.field_shutdown_delay, required=True) result_form.add_field(name="announcement", field_type="text-multi", - label="TODO") + label=lang_class.field_announcement) result_form.as_xml(command_node) return (result_form, []) diff --git a/src/jcl/jabber/tests/command.py b/src/jcl/jabber/tests/command.py index 7352d1f..e45afbd 100644 --- a/src/jcl/jabber/tests/command.py +++ b/src/jcl/jabber/tests/command.py @@ -98,7 +98,7 @@ class CommandManager_TestCase(unittest.TestCase): def test_apply_admin_command_action_as_admin(self): command.command_manager.commands["command1"] = True command.command_manager.apply_execute_command = \ - lambda iq, command_name: [] + lambda iq, command_name: [] command.command_manager.component = MockComponent() info_query = Iq(stanza_type="set", from_jid="admin@test.com", @@ -111,7 +111,7 @@ class CommandManager_TestCase(unittest.TestCase): def test_apply_admin_command_action_as_user(self): command.command_manager.commands["command1"] = True command.command_manager.apply_execute_command = \ - lambda iq, command_name: [] + lambda iq, command_name: [] command.command_manager.component = MockComponent() info_query = Iq(stanza_type="set", from_jid="user@test.com", @@ -128,7 +128,7 @@ class CommandManager_TestCase(unittest.TestCase): def test_apply_non_admin_command_action_as_admin(self): command.command_manager.commands["command1"] = False command.command_manager.apply_execute_command = \ - lambda iq, command_name: [] + lambda iq, command_name: [] command.command_manager.component = MockComponent() info_query = Iq(stanza_type="set", from_jid="admin@test.com", @@ -141,7 +141,7 @@ class CommandManager_TestCase(unittest.TestCase): def test_apply_non_admin_command_action_as_user(self): command.command_manager.commands["command1"] = False command.command_manager.apply_execute_command = \ - lambda iq, command_name: [] + lambda iq, command_name: [] command.command_manager.component = MockComponent() info_query = Iq(stanza_type="set", from_jid="user@test.com", @@ -205,12 +205,14 @@ class JCLCommandManager_TestCase(JCLTestCase): self.assertEquals(children.name, action) children = children.next - def test_add_form_select_user_jids(self): + def test_add_form_select_users_jids(self): info_query = Iq(stanza_type="set", from_jid="admin@test.com", to_jid="jcl.test.com") command_node = info_query.set_new_content(command.COMMAND_NS, "command") - self.command_manager.add_form_select_user_jids(command_node, Lang.en) + self.command_manager.add_form_select_users_jids(command_node, "title", + "description", + Lang.en.field_users_jids) user_jid_field = info_query.xpath_eval("c:command/data:x/data:field[1]", {"c": "http://jabber.org/protocol/commands", "data": "jabber:x:data"}) @@ -218,14 +220,16 @@ class JCLCommandManager_TestCase(JCLTestCase): self.assertEquals(len(user_jid_field), 1) self.assertEquals(user_jid_field[0].prop("var"), "user_jids") self.assertEquals(user_jid_field[0].prop("type"), "jid-multi") - self.assertEquals(user_jid_field[0].prop("label"), Lang.en.field_user_jid) + self.assertEquals(user_jid_field[0].prop("label"), Lang.en.field_users_jids) def test_add_form_select_user_jid(self): info_query = Iq(stanza_type="set", from_jid="admin@test.com", to_jid="jcl.test.com") command_node = info_query.set_new_content(command.COMMAND_NS, "command") - self.command_manager.add_form_select_user_jid(command_node, Lang.en) + self.command_manager.add_form_select_user_jid(command_node, "title", + "description", + Lang.en.field_user_jid) user_jid_field = info_query.xpath_eval("c:command/data:x/data:field[1]", {"c": "http://jabber.org/protocol/commands", "data": "jabber:x:data"}) @@ -269,14 +273,15 @@ class JCLCommandManager_TestCase(JCLTestCase): session_context["user_jids"] = ["test1@test.com", "test2@test.com"] self.command_manager.add_form_select_accounts(session_context, command_node, - Lang.en) + Lang.en, + "title", "description") fields = info_query.xpath_eval("c:command/data:x/data:field", {"c": "http://jabber.org/protocol/commands", "data": "jabber:x:data"}) self.assertEquals(len(fields), 1) self.assertEquals(fields[0].prop("var"), "account_names") self.assertEquals(fields[0].prop("type"), "list-multi") - self.assertEquals(fields[0].prop("label"), "Account") + self.assertEquals(fields[0].prop("label"), Lang.en.field_accounts) options = info_query.xpath_eval("c:command/data:x/data:field[1]/data:option", {"c": "http://jabber.org/protocol/commands", "data": "jabber:x:data"}) @@ -338,6 +343,7 @@ class JCLCommandManager_TestCase(JCLTestCase): self.command_manager.add_form_select_accounts(session_context, command_node, Lang.en, + "title", "description", Account.q.enabled==True) fields = info_query.xpath_eval("c:command/data:x/data:field", {"c": "http://jabber.org/protocol/commands", @@ -345,7 +351,7 @@ class JCLCommandManager_TestCase(JCLTestCase): self.assertEquals(len(fields), 1) self.assertEquals(fields[0].prop("var"), "account_names") self.assertEquals(fields[0].prop("type"), "list-multi") - self.assertEquals(fields[0].prop("label"), "Account") + self.assertEquals(fields[0].prop("label"), Lang.en.field_accounts) options = info_query.xpath_eval("c:command/data:x/data:field[1]/data:option", {"c": "http://jabber.org/protocol/commands", "data": "jabber:x:data"}) @@ -400,14 +406,15 @@ class JCLCommandManager_TestCase(JCLTestCase): session_context["user_jid"] = ["test1@test.com"] self.command_manager.add_form_select_account(session_context, command_node, - Lang.en) + Lang.en, + "title", "description") fields = info_query.xpath_eval("c:command/data:x/data:field", {"c": "http://jabber.org/protocol/commands", "data": "jabber:x:data"}) self.assertEquals(len(fields), 1) self.assertEquals(fields[0].prop("var"), "account_name") self.assertEquals(fields[0].prop("type"), "list-single") - self.assertEquals(fields[0].prop("label"), "Account") + self.assertEquals(fields[0].prop("label"), Lang.en.field_account) options = info_query.xpath_eval("c:command/data:x/data:field[1]/data:option", {"c": "http://jabber.org/protocol/commands", "data": "jabber:x:data"}) diff --git a/src/jcl/lang.py b/src/jcl/lang.py index 5ec1901..93f3403 100644 --- a/src/jcl/lang.py +++ b/src/jcl/lang.py @@ -104,7 +104,7 @@ class Lang: field_dnd_action_0 = field_action_0 field_offline_action_0 = field_action_0 - field_user_jid = u"User JID" + field_user_jid = u"User Jabber ID" field_password = u"Password" error_subject = u"Error" @@ -113,9 +113,107 @@ class Lang: get_gateway_desc = u"Please enter the email address of your contact" get_gateway_prompt = u"Email address" - command_get_disabled_users_num = u"get-disabled-users-num" + command_get_disabled_users_num = u"Get number of disabled accounts" command_add_user = u"Create new account" - select_account_type = u"Select account type" + command_add_user_1_description = u"Select an account type" + field_account_type = u"Account type" + + command_delete_user = u"Delete accounts" + command_delete_user_1_description = \ + u"Fill out this form with user(s) Jabber ID(s) to search account(s) to delete" + command_delete_user_2_description = u"Select account(s) to delete" + field_users_jids = u"User(s) Jabber ID(s)" + field_account = u"Account" + field_accounts = u"Accounts" + + command_disable_user = u"Disable accounts" + command_disable_user_1_description = \ + u"Fill out this form with user(s) Jabber ID(s) to search account(s) to disable" + command_disable_user_2_description = u"Select account(s) to disable" + + command_reenable_user = u"Re-Enable accounts" + command_reenable_user_1_description = \ + u"Fill out this form with user(s) Jabber ID(s) to search account(s) to re-enable" + command_reenable_user_2_description = u"Select account(s) to re-enable" + + command_end_user_session = u"End users sessions" + command_end_user_session_1_description = \ + u"Fill out this form with user(s) Jabber ID(s) to search account(s) to end session" + command_end_user_session_2_description = \ + u"Select account(s) to end their session" + + command_get_user_password = u"Get user's password" + command_get_user_password_1_description = \ + u"Fill out this form with user Jabber ID to search account" \ + u" for which to retrieve password" + command_get_user_password_2_description = \ + u"Select account for which to retrieve password" + + command_change_user_password = u"Changing user's password" + command_change_user_password_1_description = \ + u"Fill out this form with user Jabber ID to search account" \ + u" for which to change password" + command_change_user_password_2_description = \ + u"Select account for which to change password" + + command_get_user_roster = u"Get user's accounts" + command_get_user_roster_1_description = \ + u"Fill out this form with user Jabber ID for which to retrieve accounts" + + command_get_user_lastlogin = u"Get user's last login time" + command_get_user_lastlogin_1_description = \ + u"Fill out this form with user Jabber ID to search account" \ + u" for which to retrieve last login time" + command_get_user_lastlogin_2_description = \ + u"Select account for which to retrieve last login time" + + field_registered_users_num = u"The number of registered accounts" + field_disabled_users_num = u"The number of disabled accounts" + field_online_users_num = u"The number of online accounts" + + field_max_items = u"Maximum number of items to show" + field_registered_users_list = u"The list of registered accounts" + field_disabled_users_list = u"The list of disabled accounts" + field_online_users_list = u"The list of online accounts" + + command_announce = u"Make an annoucement" + command_announce_1_description = \ + u"Fill out this form with the announce to send to online users" + field_announcement = u"Announcement" + + command_set_motd = u"Set the Message Of The Day" + command_set_motd_1_description = \ + u"Fill out this form with the Message Of The Day to send to all" \ + u" registered users" + field_motd = u"Message Of The Day" + + command_edit_motd = u"Edit the Message Of The Day" + + command_delete_motd = u"Delete the Message Of The Day" + + command_set_welcome = u"Set Welcome Message" + command_set_welcome_1_description = \ + u"Fill out this form with the Welcome Message to send to all" \ + u" new registered users" + field_welcome = u"Welcome Message" + + command_delete_welcome = u"Delete Welcome Message" + + command_edit_admin = u"Edit the admin list" + command_edit_admin_1_description = \ + u"Fill out this form to edit the list of users who have " \ + u"administrative privileges." + field_admin_jids = u"The admin list" + + command_restart = u"Restart the service" + command_restart_1_description = \ + u"Fill out this form to restart the service." + field_restart_delay = u"Delay before restarting the service" + + command_shutdown = u"Shut down the service" + command_shutdown_1_description = \ + u"Fill out this form to shut down the service." + field_shutdown_delay = u"Delay before shutting down the service" welcome_message_subject = u"Welcome" @@ -163,9 +261,118 @@ class Lang: get_gateway_desc = u"Entrer l'adresse email de votre contact" get_gateway_prompt = u"Adresse email" - command_get_disabled_users_num = u"get_disabled_users_num" - command_add_user = u"Créer un compte" - select_account_type = u"Selectionner le type de comptes" + command_get_disabled_users_num = u"Récupérer le nombre de comptes " \ + u"désactivés" + command_add_user = u"Créer un nouveau compte" + command_add_user_1_description = u"Selectionner un type de compte" + field_account_type = u"Type de compte" + + command_delete_user = u"Supprimer des comptes" + command_delete_user_1_description = \ + u"Remplir ce formulaire avec le(s) Jabber ID(s) utilisateur(s) pour" \ + u" rechercher le(s) compte(s) à supprimer" + command_delete_user_2_description = u"Sélectionner le(s) compte(s) à " \ + u"supprimer" + field_users_jids = u"Jabber ID(s) utilisateur(s)" + field_account = u"Compte" + field_accounts = u"Comptes" + + command_disable_user = u"Désactiver des comptes" + command_disable_user_1_description = \ + u"Remplir ce formulaire avec le(s) Jabber ID(s) utilisateur(s) " \ + u"pour rechercher le(s) compte(s) à désactiver" + command_disable_user_2_description = u"Sélectionner le(s) compte(s) à" \ + u" désactiver" + + command_reenable_user = u"Réactiver des comptes" + command_reenable_user_1_description = \ + u"Remplir ce formulaire avec le(s) Jabber ID(s) utilisateur(s) " \ + u"pour rechercher le(s) compte(s) à réactiver" + command_reenable_user_2_description = u"Sélectionner le(s) compte(s)" \ + u" à réactiver" + + command_end_user_session = u"Terminer des sessions utilisateurs" + command_end_user_session_1_description = \ + u"Remplir ce formulaire avec le(s) Jabber ID(s) utilisateur(s)" \ + u" pour rechercher le(s) session(s) à terminer" + command_end_user_session_2_description = \ + u"Sélectionner le(s) compte(s) des sessions à terminer" + + command_get_user_password = u"Récupérer le mot de passe d'un compte" + command_get_user_password_1_description = \ + u"Remplir ce formulaire avec le(s) Jabber ID(s) utilisateur(s)" \ + u" pour rechercher le(s) compte(s) pour récupérer leur mot de passe" + command_get_user_password_2_description = \ + u"Sélectionner le(s) compte(s) pour récupérer leur mot de passe" + + command_change_user_password = u"Changer le mot de passe d'un compte" + command_change_user_password_1_description = \ + u"Remplir ce formulaire avec le(s) Jabber ID(s) utilisateur(s)" \ + u" pour rechercher le(s) compte(s) pour changer leur mot de passe" + command_change_user_password_2_description = \ + u"Sélectionner le(s) compte(s) pour changer leur mot de passe" + + command_get_user_roster = u"Récupérer les comptes utilisateurs" + command_get_user_roster_1_description = \ + u"Remplir ce formulaire avec le(s) Jabber ID(s) utilisateur(s)" \ + u" pour rechercher le(s) compte(s) à récupérer" + + command_get_user_lastlogin = u"Récupérer la date de derniere connexion" + command_get_user_lastlogin_1_description = \ + u"Remplir ce formulaire avec le(s) Jabber ID(s) utilisateur(s)" \ + u" pour rechercher le(s) compte(s) pour récupérer leur dernière " \ + u"date de connexion" + command_get_user_lastlogin_2_description = \ + u"Sélectionner le compte pour récupérer la date de dernière connexion" + + field_registered_users_num = u"Le nombre de comptes enregistrés" + field_disabled_users_num = u"Le nombre de comptes désactivés" + field_online_users_num = u"Le nombre de comptes connectés" + + field_max_items = u"Maximum d'éléments à récupérer" + field_registered_users_list = u"La liste des comptes enregistrés" + field_disabled_users_list = u"La liste des comptes désactivés" + field_online_users_list = u"La liste des comptes connectés" + + command_announce = u"Faire une annonce" + command_announce_1_description = \ + u"Remplir ce formulaire avec le(s) Jabber ID(s) utilisateur(s)" \ + u" à qui envoyer l'annonce" + field_announcement = u"Annonce" + + command_set_motd = u"Écrire le Message Du Jour" + command_set_motd_1_description = \ + u"Remplir ce formulaire avec le Message Du Jour à envoyer à tous" \ + u" les utilisateurs enregistrés" + field_motd = u"Message Du Jour" + + command_edit_motd = u"Editer le Message Du Jour" + + command_delete_motd = u"Supprimer le Message Du Jour" + + command_set_welcome = u"Écrire le message de bienvenue" + command_set_welcome_1_description = \ + u"Remplir ce formulaire avec le message de bienvenue à envoyer à" \ + u" tous les nouveaux utilisateurs" + field_welcome = u"Message de bienvenue" + + command_delete_welcome = u"Supprimer le message de bienvenue" + + command_edit_admin = u"Editer la liste des administrateurs" + command_edit_admin_1_description = \ + u"Remplir ce formulaire pour éditer la liste des utilisateurs qui" \ + u" ont les privilèges d'administration du service." + field_admin_jids = u"La liste des administrateur" + + command_restart = u"Redémarrer le service" + command_restart_1_description = \ + u"Remplir ce formulaire pour redémarrer le service." + field_restart_delay = u"Délai avant de redémarrer le service" + + command_shutdown = u"Arrêter le service" + command_shutdown_1_description = \ + u"Remplir ce formulaire pour arrêter le service." + field_shutdown_delay = u"Délai avant d'arrêter le service" welcome_message_subject = u"Bienvenue" diff --git a/src/jcl/tests/lang.py b/src/jcl/tests/lang.py index 8e8c069..6016262 100644 --- a/src/jcl/tests/lang.py +++ b/src/jcl/tests/lang.py @@ -117,9 +117,103 @@ class Language_TestCase(unittest.TestCase): self.assertNotEquals(self.lang_class.get_gateway_desc, None) self.assertNotEquals(self.lang_class.get_gateway_prompt, None) - self.assertNotEquals(self.lang_class.command_get_disabled_users_num, None) + self.assertNotEquals(self.lang_class.command_get_disabled_users_num, + None) + self.assertNotEquals(self.lang_class.command_add_user, None) - self.assertNotEquals(self.lang_class.select_account_type, None) + self.assertNotEquals(self.lang_class.command_add_user_1_description, + None) + self.assertNotEquals(self.lang_class.field_account_type, None) + + self.assertNotEquals(self.lang_class.command_delete_user, None) + self.assertNotEquals(self.lang_class.command_delete_user_1_description, + None) + self.assertNotEquals(self.lang_class.command_delete_user_2_description, + None) + self.assertNotEquals(self.lang_class.field_users_jids, None) + self.assertNotEquals(self.lang_class.field_account, None) + self.assertNotEquals(self.lang_class.field_accounts, None) + + self.assertNotEquals(self.lang_class.command_disable_user, None) + self.assertNotEquals(self.lang_class.command_disable_user_1_description, + None) + self.assertNotEquals(self.lang_class.command_disable_user_2_description, + None) + + self.assertNotEquals(self.lang_class.command_reenable_user, None) + self.assertNotEquals(self.lang_class.command_reenable_user_1_description, + None) + self.assertNotEquals(self.lang_class.command_reenable_user_2_description, + None) + + self.assertNotEquals(self.lang_class.command_end_user_session, None) + self.assertNotEquals(self.lang_class.command_end_user_session_1_description, + None) + self.assertNotEquals(self.lang_class.command_end_user_session_2_description, + None) + + self.assertNotEquals(self.lang_class.command_get_user_password, None) + self.assertNotEquals(self.lang_class.command_get_user_password_1_description, + None) + self.assertNotEquals(self.lang_class.command_get_user_password_2_description, + None) + + self.assertNotEquals(self.lang_class.command_change_user_password, + None) + self.assertNotEquals(self.lang_class.command_change_user_password_1_description, + None) + self.assertNotEquals(self.lang_class.command_change_user_password_2_description, + None) + + self.assertNotEquals(self.lang_class.command_get_user_roster, None) + self.assertNotEquals(self.lang_class.command_get_user_roster_1_description, + None) + + self.assertNotEquals(self.lang_class.command_get_user_lastlogin, + None) + self.assertNotEquals(self.lang_class.command_get_user_lastlogin_1_description, + None) + self.assertNotEquals(self.lang_class.command_get_user_lastlogin_2_description, + None) + + self.assertNotEquals(self.lang_class.field_registered_users_num, None) + self.assertNotEquals(self.lang_class.field_disabled_users_num, None) + self.assertNotEquals(self.lang_class.field_online_users_num, None) + + self.assertNotEquals(self.lang_class.field_max_items, None) + self.assertNotEquals(self.lang_class.field_registered_users_list, None) + self.assertNotEquals(self.lang_class.field_disabled_users_list, None) + self.assertNotEquals(self.lang_class.field_online_users_list, None) + + self.assertNotEquals(self.lang_class.command_announce, None) + self.assertNotEquals(self.lang_class.command_announce_1_description, None) + self.assertNotEquals(self.lang_class.field_announcement, None) + + self.assertNotEquals(self.lang_class.command_set_motd, None) + self.assertNotEquals(self.lang_class.command_set_motd_1_description, None) + self.assertNotEquals(self.lang_class.field_motd, None) + + self.assertNotEquals(self.lang_class.command_edit_motd, None) + + self.assertNotEquals(self.lang_class.command_delete_motd, None) + + self.assertNotEquals(self.lang_class.command_set_welcome, None) + self.assertNotEquals(self.lang_class.command_set_welcome_1_description, None) + self.assertNotEquals(self.lang_class.field_welcome, None) + + self.assertNotEquals(self.lang_class.command_delete_welcome, None) + + self.assertNotEquals(self.lang_class.command_edit_admin, None) + self.assertNotEquals(self.lang_class.command_edit_admin_1_description, None) + self.assertNotEquals(self.lang_class.field_admin_jids, None) + + self.assertNotEquals(self.lang_class.command_restart, None) + self.assertNotEquals(self.lang_class.command_restart_1_description, None) + self.assertNotEquals(self.lang_class.field_restart_delay, None) + + self.assertNotEquals(self.lang_class.command_shutdown, None) + self.assertNotEquals(self.lang_class.command_shutdown_1_description, None) + self.assertNotEquals(self.lang_class.field_shutdown_delay, None) self.assertNotEquals(self.lang_class.welcome_message_subject, None) @@ -140,16 +234,16 @@ class Language_pl_TestCase(Language_TestCase): self.lang_class = Lang.pl def suite(): - suite = unittest.TestSuite() - suite.addTest(unittest.makeSuite(Lang_TestCase, 'test')) - suite.addTest(unittest.makeSuite(Language_TestCase, 'test')) - suite.addTest(unittest.makeSuite(Language_fr_TestCase, 'test')) + test_suite = unittest.TestSuite() + test_suite.addTest(unittest.makeSuite(Lang_TestCase, 'test')) + test_suite.addTest(unittest.makeSuite(Language_TestCase, 'test')) + test_suite.addTest(unittest.makeSuite(Language_fr_TestCase, 'test')) # suite.addTest(unittest.makeSuite(Language_nl_TestCase, 'test')) # suite.addTest(unittest.makeSuite(Language_es_TestCase, 'test')) # suite.addTest(unittest.makeSuite(Language_pl_TestCase, 'test')) # suite.addTest(unittest.makeSuite(Language_cs_TestCase, 'test')) # suite.addTest(unittest.makeSuite(Language_ru_TestCase, 'test')) - return suite + return test_suite if __name__ == '__main__': unittest.main(defaultTest='suite')