From 3b6403b2f2b1e318cb4bef361f35712c01598741 Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 1 Jan 2018 15:08:33 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/forms.py | 2 +- .../_asset_group_bulk_update_modal.html | 2 +- .../templates/assets/user_asset_list.html | 10 -- apps/assets/views/admin_user.py | 16 +- apps/assets/views/asset.py | 16 +- apps/common/mixins.py | 5 +- apps/locale/zh/LC_MESSAGES/django.mo | Bin 27743 -> 28430 bytes apps/locale/zh/LC_MESSAGES/django.po | 162 ++++++++++-------- apps/ops/templates/ops/task_list.html | 10 +- apps/ops/views.py | 25 ++- apps/static/js/jumpserver.js | 12 +- apps/templates/_message.html | 4 +- apps/templates/_nav_user.html | 5 - .../templates/terminal/command_list.html | 8 +- .../templates/terminal/session_list.html | 14 +- apps/terminal/views/command.py | 1 - apps/terminal/views/session.py | 1 - apps/terminal/views/terminal.py | 2 +- apps/users/api.py | 2 +- apps/users/models/user.py | 6 +- .../users/templates/users/login_log_list.html | 10 +- .../templates/users/user_delete_confirm.html | 15 -- .../templates/users/user_granted_asset.html | 8 +- apps/users/views/login.py | 1 - 24 files changed, 170 insertions(+), 167 deletions(-) delete mode 100644 apps/users/templates/users/user_delete_confirm.html diff --git a/apps/assets/forms.py b/apps/assets/forms.py index 70abd4777..431c174a6 100644 --- a/apps/assets/forms.py +++ b/apps/assets/forms.py @@ -171,7 +171,7 @@ class AdminUserForm(forms.ModelForm): password = forms.CharField( widget=forms.PasswordInput, max_length=128, strip=True, required=False, - help_text=_('If also set private key, use that first'), + help_text=_('Password or private key password'), ) # Need use upload private key file except paste private key content private_key_file = forms.FileField(required=False) diff --git a/apps/assets/templates/assets/_asset_group_bulk_update_modal.html b/apps/assets/templates/assets/_asset_group_bulk_update_modal.html index b87b9594f..c253c4d65 100644 --- a/apps/assets/templates/assets/_asset_group_bulk_update_modal.html +++ b/apps/assets/templates/assets/_asset_group_bulk_update_modal.html @@ -2,7 +2,7 @@ {% load i18n %} {% block modal_id %}asset_group_bulk_update_modal{% endblock %} {% block modal_class %}modal-lg{% endblock %} -{% block modal_title%}{% trans "Update asset sroup" %}{% endblock %} +{% block modal_title%}{% trans "Update asset group" %}{% endblock %} {% block modal_body %} {% load bootstrap3 %}

{% trans "Hint: only change the field you want to update." %}

diff --git a/apps/assets/templates/assets/user_asset_list.html b/apps/assets/templates/assets/user_asset_list.html index 2f71320d1..100e09525 100644 --- a/apps/assets/templates/assets/user_asset_list.html +++ b/apps/assets/templates/assets/user_asset_list.html @@ -9,16 +9,6 @@ {% block content_left_head %}{% endblock %} {% block table_search %} -
- -
{% endblock %} {% block table_container %} diff --git a/apps/assets/views/admin_user.py b/apps/assets/views/admin_user.py index f5c5ddae8..713f1fc53 100644 --- a/apps/assets/views/admin_user.py +++ b/apps/assets/views/admin_user.py @@ -41,8 +41,8 @@ class AdminUserCreateView(AdminUserRequiredMixin, def get_context_data(self, **kwargs): context = { - 'app': 'assets', - 'action': 'Create admin user' + 'app': _('Assets'), + 'action': _('Create admin user') } kwargs.update(context) return super().get_context_data(**kwargs) @@ -64,8 +64,8 @@ class AdminUserUpdateView(AdminUserRequiredMixin, UpdateView): def get_context_data(self, **kwargs): context = { - 'app': 'assets', - 'action': 'Update admin user' + 'app': _('Assets'), + 'action': _('Update admin user'), } kwargs.update(context) return super().get_context_data(**kwargs) @@ -85,8 +85,8 @@ class AdminUserDetailView(AdminUserRequiredMixin, DetailView): def get_context_data(self, **kwargs): cluster_remain = Cluster.objects.exclude(admin_user=self.object) context = { - 'app': 'assets', - 'action': 'Admin user detail', + 'app': _('Assets'), + 'action': _('Admin user detail'), 'cluster_remain': cluster_remain, } kwargs.update(context) @@ -112,8 +112,8 @@ class AdminUserAssetsView(AdminUserRequiredMixin, SingleObjectMixin, ListView): def get_context_data(self, **kwargs): context = { - 'app': 'assets', - 'action': 'Admin user detail', + 'app': _('Assets'), + 'action': _('Admin user detail'), "total_amount": len(self.queryset), 'unreachable_amount': len([asset for asset in self.queryset if asset.is_connective is False]) } diff --git a/apps/assets/views/asset.py b/apps/assets/views/asset.py index cd088024a..0de933395 100644 --- a/apps/assets/views/asset.py +++ b/apps/assets/views/asset.py @@ -81,8 +81,8 @@ class AssetCreateView(AdminUserRequiredMixin, CreateView): def get_context_data(self, **kwargs): context = { - 'app': 'Assets', - 'action': 'Create asset', + 'app': _('Assets'), + 'action': _('Create asset'), } kwargs.update(context) return super().get_context_data(**kwargs) @@ -138,8 +138,8 @@ class AssetBulkUpdateView(AdminUserRequiredMixin, ListView): def get_context_data(self, **kwargs): context = { - 'app': 'Assets', - 'action': 'Bulk update asset', + 'app': _('Assets'), + 'action': _('Bulk update asset'), 'form': self.form, 'assets_selected': self.id_list, } @@ -155,8 +155,8 @@ class AssetUpdateView(AdminUserRequiredMixin, UpdateView): def get_context_data(self, **kwargs): context = { - 'app': 'Assets', - 'action': 'Update asset', + 'app': _('Assets'), + 'action': _('Update asset'), } kwargs.update(context) return super(AssetUpdateView, self).get_context_data(**kwargs) @@ -176,8 +176,8 @@ class AssetDetailView(DetailView): def get_context_data(self, **kwargs): asset_groups = self.object.groups.all() context = { - 'app': 'Assets', - 'action': 'Asset detail', + 'app': _('Assets'), + 'action': _('Asset detail'), 'asset_groups_remain': [asset_group for asset_group in AssetGroup.objects.all() if asset_group not in asset_groups], 'asset_groups': asset_groups, diff --git a/apps/common/mixins.py b/apps/common/mixins.py index 534a9a013..1371cf65b 100644 --- a/apps/common/mixins.py +++ b/apps/common/mixins.py @@ -89,6 +89,7 @@ class BulkSerializerMixin(object): class DatetimeSearchMixin: + date_format = '%Y-%m-%d' date_from = date_to = None def get(self, request, *args, **kwargs): @@ -96,7 +97,7 @@ class DatetimeSearchMixin: date_to_s = self.request.GET.get('date_to') if date_from_s: - date_from = timezone.datetime.strptime(date_from_s, '%m/%d/%Y') + date_from = timezone.datetime.strptime(date_from_s, self.date_format) self.date_from = date_from.replace( tzinfo=timezone.get_current_timezone() ) @@ -105,7 +106,7 @@ class DatetimeSearchMixin: if date_to_s: date_to = timezone.datetime.strptime( - date_to_s + ' 23:59:59', '%m/%d/%Y %H:%M:%S' + date_to_s + ' 23:59:59', self.date_format + ' %H:%M:%S' ) self.date_to = date_to.replace( tzinfo=timezone.get_current_timezone() diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index e042e843688e2faf80f5c14490a23974a933e945..34bc950538f33866e6c3b55b84325fc8363a0b2c 100644 GIT binary patch delta 10886 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 delta 10475 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\n" "Language-Team: Jumpserver team\n" @@ -55,7 +55,7 @@ msgstr "选择资产" #: assets/templates/assets/asset_list.html:32 #: assets/templates/assets/cluster_assets.html:53 #: assets/templates/assets/system_user_asset.html:54 -#: assets/templates/assets/user_asset_list.html:31 +#: assets/templates/assets/user_asset_list.html:21 #: perms/templates/perms/asset_permission_asset.html:56 #: users/templates/users/user_group_granted_asset.html:51 msgid "Port" @@ -105,8 +105,8 @@ msgid "Name" msgstr "名称" #: assets/forms.py:174 -msgid "If also set private key, use that first" -msgstr "如果设置私钥,则优先使用密钥" +msgid "Password or private key password" +msgstr "密码或秘钥不合法" #: assets/forms.py:202 assets/forms.py:260 assets/forms.py:321 msgid "Invalid private key" @@ -190,7 +190,7 @@ msgstr "测试环境" #: assets/templates/assets/asset_list.html:31 #: assets/templates/assets/cluster_assets.html:52 #: assets/templates/assets/system_user_asset.html:53 -#: assets/templates/assets/user_asset_list.html:30 +#: assets/templates/assets/user_asset_list.html:20 #: perms/templates/perms/asset_permission_asset.html:55 #: users/templates/users/login_log_list.html:52 #: users/templates/users/user_granted_asset.html:49 @@ -204,7 +204,7 @@ msgstr "IP" #: assets/templates/assets/asset_list.html:30 #: assets/templates/assets/cluster_assets.html:51 #: assets/templates/assets/system_user_asset.html:52 -#: assets/templates/assets/user_asset_list.html:29 +#: assets/templates/assets/user_asset_list.html:19 #: perms/templates/perms/asset_permission_asset.html:54 #: users/templates/users/user_granted_asset.html:48 #: users/templates/users/user_group_granted_asset.html:49 @@ -496,25 +496,23 @@ msgstr "推送系统用户到资产: {}" msgid "Push system user to cluster assets period: {}->{}" msgstr "定期推送系统用户到资产: {}->{}" -#: assets/templates/assets/_asset_group_bulk_update_modal.html:5 -#, fuzzy -#| msgid "Update asset group" -msgid "Update asset sroup" -msgstr "编辑资产组" - #: assets/templates/assets/_asset_group_bulk_update_modal.html:8 msgid "Hint: only change the field you want to update." msgstr "仅修改你需要更新的字段" #: assets/templates/assets/_asset_group_bulk_update_modal.html:12 #: assets/templates/assets/system_user_asset.html:21 -#: assets/views/admin_user.py:27 assets/views/asset.py:47 -#: assets/views/asset.py:61 assets/views/cluster.py:22 -#: assets/views/cluster.py:80 assets/views/cluster.py:97 -#: assets/views/group.py:30 assets/views/group.py:53 assets/views/group.py:71 -#: assets/views/group.py:93 assets/views/system_user.py:29 -#: assets/views/system_user.py:48 assets/views/system_user.py:71 -#: assets/views/system_user.py:91 templates/_nav.html:19 +#: assets/views/admin_user.py:27 assets/views/admin_user.py:44 +#: assets/views/admin_user.py:67 assets/views/admin_user.py:88 +#: assets/views/admin_user.py:115 assets/views/asset.py:47 +#: assets/views/asset.py:61 assets/views/asset.py:84 assets/views/asset.py:141 +#: assets/views/asset.py:158 assets/views/asset.py:179 +#: assets/views/cluster.py:22 assets/views/cluster.py:80 +#: assets/views/cluster.py:97 assets/views/group.py:30 assets/views/group.py:53 +#: assets/views/group.py:71 assets/views/group.py:93 +#: assets/views/system_user.py:29 assets/views/system_user.py:48 +#: assets/views/system_user.py:71 assets/views/system_user.py:91 +#: templates/_nav.html:19 msgid "Assets" msgstr "资产管理" @@ -647,8 +645,6 @@ msgstr "详情" #: assets/templates/assets/admin_user_assets.html:21 #: assets/templates/assets/admin_user_detail.html:21 -#, fuzzy -#| msgid "Asset list of " msgid "Assets list" msgstr "资产列表" @@ -662,7 +658,7 @@ msgstr "资产列表" #: assets/templates/assets/asset_group_detail.html:48 #: assets/templates/assets/asset_list.html:34 #: assets/templates/assets/cluster_assets.html:54 -#: assets/templates/assets/user_asset_list.html:32 +#: assets/templates/assets/user_asset_list.html:22 #: users/templates/users/login_log_list.html:50 msgid "Type" msgstr "类型" @@ -699,6 +695,7 @@ msgstr "任务已下发,查看左侧资产状态" #: assets/templates/assets/admin_user_create_update.html:16 #: assets/templates/assets/admin_user_list.html:14 +#: assets/views/admin_user.py:45 msgid "Create admin user" msgstr "创建管理用户" @@ -743,7 +740,7 @@ msgstr "不可达" #: assets/templates/assets/cluster_assets.html:56 #: assets/templates/assets/cluster_list.html:23 #: assets/templates/assets/system_user_list.html:31 -#: assets/templates/assets/user_asset_list.html:37 +#: assets/templates/assets/user_asset_list.html:27 #: ops/templates/ops/adhoc_history.html:59 ops/templates/ops/task_adhoc.html:61 #: ops/templates/ops/task_history.html:62 ops/templates/ops/task_list.html:46 #: perms/templates/perms/asset_permission_list.html:32 @@ -787,7 +784,8 @@ msgstr "删除" msgid "Group" msgstr "组" -#: assets/templates/assets/asset_detail.html:20 assets/views/cluster.py:98 +#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:180 +#: assets/views/cluster.py:98 msgid "Asset detail" msgstr "资产详情" @@ -818,7 +816,7 @@ msgstr "快速修改" #: assets/templates/assets/asset_detail.html:175 #: assets/templates/assets/asset_list.html:37 -#: assets/templates/assets/user_asset_list.html:35 perms/models.py:20 +#: assets/templates/assets/user_asset_list.html:25 perms/models.py:20 #: perms/templates/perms/asset_permission_create_update.html:47 #: terminal/templates/terminal/terminal_list.html:34 #: users/templates/users/_select_user_modal.html:18 @@ -916,28 +914,26 @@ msgid "AssetGroup Updated" msgstr "资产组更新" #: assets/templates/assets/asset_list.html:15 -#: assets/templates/assets/user_asset_list.html:15 #: users/templates/users/user_list.html:7 msgid "Import" msgstr "导入" #: assets/templates/assets/asset_list.html:18 -#: assets/templates/assets/user_asset_list.html:18 #: users/templates/users/user_list.html:10 msgid "Export" msgstr "导出" -#: assets/templates/assets/asset_list.html:25 +#: assets/templates/assets/asset_list.html:25 assets/views/asset.py:85 msgid "Create asset" msgstr "创建资产" #: assets/templates/assets/asset_list.html:35 -#: assets/templates/assets/user_asset_list.html:33 +#: assets/templates/assets/user_asset_list.html:23 msgid "Env" msgstr "环境" #: assets/templates/assets/asset_list.html:36 -#: assets/templates/assets/user_asset_list.html:34 +#: assets/templates/assets/user_asset_list.html:24 msgid "Hardware" msgstr "硬件" @@ -1040,7 +1036,6 @@ msgstr "Cluster删除失败" #: assets/templates/assets/delete_confirm.html:6 #: perms/templates/perms/delete_confirm.html:6 templates/delete_confirm.html:6 -#: users/templates/users/user_delete_confirm.html:6 msgid "Confirm delete" msgstr "确认删除" @@ -1112,11 +1107,11 @@ msgstr "删除系统用户" msgid "System Users Deleting failed." msgstr "系统用户删除失败" -#: assets/templates/assets/user_asset_list.html:36 +#: assets/templates/assets/user_asset_list.html:26 msgid "Connective" msgstr "连接性" -#: assets/templates/assets/user_asset_list.html:76 +#: assets/templates/assets/user_asset_list.html:66 msgid "Connect" msgstr "连接" @@ -1129,10 +1124,26 @@ msgstr "管理用户列表" msgid "Create admin user {name} successfully." msgstr "创建管理用户 {name} 成功" +#: assets/views/admin_user.py:68 +msgid "Update admin user" +msgstr "更新管理用户" + +#: assets/views/admin_user.py:89 assets/views/admin_user.py:116 +msgid "Admin user detail" +msgstr "管理用户详情" + #: assets/views/asset.py:48 assets/views/asset.py:62 msgid "Asset list" msgstr "资产列表" +#: assets/views/asset.py:142 +msgid "Bulk update asset" +msgstr "批量更新资产" + +#: assets/views/asset.py:159 +msgid "Update asset" +msgstr "编辑资产" + #: assets/views/asset.py:292 msgid "already exists" msgstr "已经存在" @@ -1281,7 +1292,7 @@ msgid "Version detail" msgstr "版本详情" #: ops/templates/ops/adhoc_detail.html:22 -#: ops/templates/ops/adhoc_history.html:22 +#: ops/templates/ops/adhoc_history.html:22 ops/views.py:121 msgid "Version run history" msgstr "执行历史" @@ -1353,7 +1364,7 @@ msgstr "失败/成功/总" msgid "Version" msgstr "版本" -#: ops/templates/ops/adhoc_history_detail.html:19 +#: ops/templates/ops/adhoc_history_detail.html:19 ops/views.py:134 msgid "Run history detail" msgstr "执行历史详情" @@ -1379,12 +1390,12 @@ msgid "Success assets" msgstr "成功资产" #: ops/templates/ops/task_adhoc.html:19 ops/templates/ops/task_detail.html:19 -#: ops/templates/ops/task_history.html:19 +#: ops/templates/ops/task_history.html:19 ops/views.py:59 msgid "Task detail" msgstr "任务详情" #: ops/templates/ops/task_adhoc.html:22 ops/templates/ops/task_detail.html:22 -#: ops/templates/ops/task_history.html:22 +#: ops/templates/ops/task_history.html:22 ops/views.py:72 msgid "Task versions" msgstr "任务各版本" @@ -1435,10 +1446,19 @@ msgstr "成功" msgid "Date" msgstr "日期" +#: ops/views.py:42 ops/views.py:58 ops/views.py:71 ops/views.py:84 +#: ops/views.py:107 ops/views.py:120 ops/views.py:133 +msgid "Ops" +msgstr "作业中心" + #: ops/views.py:43 msgid "Task list" msgstr "任务列表" +#: ops/views.py:85 +msgid "Task run history" +msgstr "执行历史" + #: perms/forms.py:16 users/forms.py:144 users/forms.py:149 users/forms.py:161 #: users/forms.py:190 msgid "Select users" @@ -1451,7 +1471,7 @@ msgstr "选择用户" #: terminal/models.py:92 terminal/templates/terminal/command_list.html:32 #: terminal/templates/terminal/command_list.html:72 #: terminal/templates/terminal/session_list.html:33 -#: terminal/templates/terminal/session_list.html:71 +#: terminal/templates/terminal/session_list.html:71 users/models/user.py:31 #: users/templates/users/user_group_detail.html:78 users/views/user.py:348 msgid "User" msgstr "用户" @@ -1623,7 +1643,7 @@ msgid "Update asset permission" msgstr "更新资产授权" #: perms/views.py:115 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Update asset permission {name} success." msgstr "更新授权 {name} 成功" @@ -1674,10 +1694,17 @@ msgstr "" " " #: templates/_message.html:16 +#, python-format msgid "" -"Your ssh public key not set or expired. Please click this link to update your" -msgstr "您的ssh秘钥没有设置或已失效,请点击 链接 更新" +"\n" +" Your ssh public key not set or expired. Please click this link to update\n" +" " +msgstr "" +"\n" +" 您的ssh秘钥没有设置或已失效,请点击 链接 更新\n" +" " #: templates/_modal.html:15 msgid "Close" @@ -1685,7 +1712,7 @@ msgstr "关闭" #: templates/_nav.html:9 users/views/group.py:30 users/views/group.py:46 #: users/views/group.py:72 users/views/group.py:89 users/views/login.py:192 -#: users/views/login.py:242 users/views/user.py:55 users/views/user.py:70 +#: users/views/login.py:241 users/views/user.py:55 users/views/user.py:70 #: users/views/user.py:95 users/views/user.py:151 users/views/user.py:308 #: users/views/user.py:322 users/views/user.py:366 users/views/user.py:388 msgid "Users" @@ -1704,15 +1731,13 @@ msgid "Job Center" msgstr "作业中心" #: templates/_nav.html:42 -#, fuzzy -#| msgid "Tasks" msgid "Task" msgstr "任务" -#: templates/_nav.html:47 templates/_nav.html:50 templates/_nav_user.html:14 +#: templates/_nav.html:47 templates/_nav.html:50 #: terminal/templates/terminal/session_list.html:74 -#: terminal/views/command.py:48 terminal/views/session.py:78 -#: terminal/views/session.py:95 terminal/views/session.py:117 +#: terminal/views/command.py:47 terminal/views/session.py:77 +#: terminal/views/session.py:94 terminal/views/session.py:116 #: terminal/views/terminal.py:31 terminal/views/terminal.py:46 #: terminal/views/terminal.py:58 msgid "Terminal" @@ -1756,16 +1781,12 @@ msgid "Profile settings" msgstr "个人信息设置" #: templates/_user_profile.html:24 -#, fuzzy -#| msgid "Admin user" msgid "Admin page" -msgstr "管理用户" +msgstr "管理页面" #: templates/_user_profile.html:26 -#, fuzzy -#| msgid "User agent" msgid "User page" -msgstr "Agent" +msgstr "用户页面" #: templates/captcha/image.html:3 msgid "Play CAPTCHA as audio file" @@ -1845,10 +1866,8 @@ msgid "Replay" msgstr "回放" #: terminal/models.py:101 -#, fuzzy -#| msgid "Date joined" msgid "Date end" -msgstr "创建日期" +msgstr "结束日期" #: terminal/models.py:118 msgid "Args" @@ -1859,12 +1878,12 @@ msgid "Goto" msgstr "" #: terminal/templates/terminal/session_detail.html:17 -#: terminal/views/session.py:118 +#: terminal/views/session.py:117 msgid "Session detail" msgstr "会话详情" #: terminal/templates/terminal/session_detail.html:28 -#: terminal/views/command.py:49 +#: terminal/views/command.py:48 msgid "Command list" msgstr "命令记录列表" @@ -1948,19 +1967,19 @@ msgstr "接受终端注册" msgid "Info" msgstr "信息" -#: terminal/views/session.py:55 +#: terminal/views/session.py:54 msgid "Audits" msgstr "审计中心" -#: terminal/views/session.py:56 +#: terminal/views/session.py:55 msgid "Proxy log list" msgstr "Session列表" -#: terminal/views/session.py:79 +#: terminal/views/session.py:78 msgid "Session online list" msgstr "在线会话" -#: terminal/views/session.py:96 +#: terminal/views/session.py:95 msgid "Session offline list" msgstr "离线会话" @@ -2104,6 +2123,14 @@ msgstr "Agent" msgid "Date login" msgstr "登录日期" +#: users/models/user.py:30 users/models/user.py:255 +msgid "Administrator" +msgstr "管理员" + +#: users/models/user.py:32 +msgid "Application" +msgstr "应用程序" + #: users/models/user.py:39 users/templates/users/_select_user_modal.html:15 #: users/templates/users/user_detail.html:86 #: users/templates/users/user_list.html:25 @@ -2134,10 +2161,6 @@ msgstr "ssh私钥" msgid "Public key" msgstr "ssh公钥" -#: users/models/user.py:255 -msgid "Administrator" -msgstr "管理员" - #: users/models/user.py:258 msgid "Administrator is the super user of system" msgstr "Administrator是初始的超级管理员" @@ -2592,7 +2615,7 @@ msgstr "密码不一致" msgid "First login" msgstr "首次登陆" -#: users/views/login.py:243 +#: users/views/login.py:242 msgid "Login log list" msgstr "登录日志" @@ -2628,3 +2651,6 @@ msgstr "密码更新" #: users/views/user.py:389 msgid "Public key update" msgstr "秘钥更新" + +#~ msgid "If also set private key, use that first" +#~ msgstr "如果设置私钥,则优先使用密钥" diff --git a/apps/ops/templates/ops/task_list.html b/apps/ops/templates/ops/task_list.html index b2963e3b1..f123f6bb7 100644 --- a/apps/ops/templates/ops/task_list.html +++ b/apps/ops/templates/ops/task_list.html @@ -16,13 +16,13 @@
- + to - +
- +
@@ -94,9 +94,11 @@ $(document).ready(function() { width: 'auto' }); $('#date .input-daterange').datepicker({ - dateFormat: 'mm/dd/yy', + format: "yyyy-mm-dd", + todayBtn: "linked", keyboardNavigation: false, forceParse: false, + calendarWeeks: true, autoclose: true }); diff --git a/apps/ops/views.py b/apps/ops/views.py index 610d65b38..963707cfe 100644 --- a/apps/ops/views.py +++ b/apps/ops/views.py @@ -20,7 +20,6 @@ class TaskListView(DatetimeSearchMixin, ListView): ordering = ('-date_created',) context_object_name = 'task_list' template_name = 'ops/task_list.html' - date_format = '%m/%d/%Y' keyword = '' def get_queryset(self): @@ -39,7 +38,7 @@ class TaskListView(DatetimeSearchMixin, ListView): def get_context_data(self, **kwargs): context = { - 'app': 'Ops', + 'app': _('Ops'), 'action': _('Task list'), 'date_from': self.date_from, 'date_to': self.date_to, @@ -55,8 +54,8 @@ class TaskDetailView(DetailView): def get_context_data(self, **kwargs): context = { - 'app': 'Ops', - 'action': 'Task detail', + 'app': _('Ops'), + 'action': _('Task detail'), } kwargs.update(context) return super().get_context_data(**kwargs) @@ -68,8 +67,8 @@ class TaskAdhocView(DetailView): def get_context_data(self, **kwargs): context = { - 'app': 'Ops', - 'action': 'Task versions', + 'app': _('Ops'), + 'action': _('Task versions'), } kwargs.update(context) return super().get_context_data(**kwargs) @@ -81,8 +80,8 @@ class TaskHistoryView(DetailView): def get_context_data(self, **kwargs): context = { - 'app': 'Ops', - 'action': 'Task run history', + 'app': _('Ops'), + 'action': _('Task run history'), } kwargs.update(context) return super().get_context_data(**kwargs) @@ -104,7 +103,7 @@ class AdHocDetailView(DetailView): def get_context_data(self, **kwargs): context = { - 'app': 'Ops', + 'app': _('Ops'), 'action': 'Task version detail', } kwargs.update(context) @@ -117,8 +116,8 @@ class AdHocHistoryView(DetailView): def get_context_data(self, **kwargs): context = { - 'app': 'Ops', - 'action': 'Version run history', + 'app': _('Ops'), + 'action': _('Version run history'), } kwargs.update(context) return super().get_context_data(**kwargs) @@ -130,8 +129,8 @@ class AdHocHistoryDetailView(DetailView): def get_context_data(self, **kwargs): context = { - 'app': 'Ops', - 'action': 'Run history detail', + 'app': _('Ops'), + 'action': _('Run history detail'), } kwargs.update(context) return super().get_context_data(**kwargs) \ No newline at end of file diff --git a/apps/static/js/jumpserver.js b/apps/static/js/jumpserver.js index 48ed03c5f..5812e0191 100644 --- a/apps/static/js/jumpserver.js +++ b/apps/static/js/jumpserver.js @@ -280,16 +280,16 @@ jumpserver.initDataTable = function (options) { language: { search: "搜索", lengthMenu: "每页 _MENU_", - info: "显示第 _START_ 到 _END_; 总共 _TOTAL_ ", + info: "显示第 _START_ 至 _END_ 项结果; 总共 _TOTAL_ 项", infoFiltered: "", infoEmpty: "", - zeroRecords: "没有匹配记录", + zeroRecords: "没有匹配项", emptyTable: "没有记录", paginate: { - first: "第一页", - previous: "上一页", - next: "下一页", - last: "最后" + first: "«", + previous: "‹", + next: "›", + last: "»" } }, lengthMenu: [[15, 25, 50, -1], [15, 25, 50, "All"]] diff --git a/apps/templates/_message.html b/apps/templates/_message.html index ff5211a23..29a25e963 100644 --- a/apps/templates/_message.html +++ b/apps/templates/_message.html @@ -13,7 +13,9 @@ {% if user.is_authenticated and not user.is_public_key_valid %}
{% url 'users:user-pubkey-update' as user_pubkey_update %} - {% trans 'Your ssh public key not set or expired. Please click this link to update' %} + {% blocktrans %} + Your ssh public key not set or expired. Please click this link to update + {% endblocktrans %}
{% endif %} {% endblock %} diff --git a/apps/templates/_nav_user.html b/apps/templates/_nav_user.html index 323d18f76..b8a0c112d 100644 --- a/apps/templates/_nav_user.html +++ b/apps/templates/_nav_user.html @@ -9,11 +9,6 @@ {% trans 'Profile' %} -
  • - - {% trans 'Terminal' %} - -