Commit 5a929721 authored by ibuler's avatar ibuler

[Bugfix] 修复ops一些功能的bug

parent 3f89701b
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
from django.utils.translation import ugettext as _
PUSH_SYSTEM_USER_PERIOD_LOCK_KEY = "PUSH_SYSTEM_USER_PERIOD_KEY" PUSH_SYSTEM_USER_PERIOD_LOCK_KEY = "PUSH_SYSTEM_USER_PERIOD_KEY"
PUSH_SYSTEM_USER_PERIOD_TASK_NAME = "PUSH-SYSTEM-USER-PERIOD" PUSH_SYSTEM_USER_PERIOD_TASK_NAME = _("PUSH SYSTEM USER TO CLUSTER PERIOD TASK")
PUSH_SYSTEM_USER_TASK_NAME = "PUSH-SYSTEM-USER-TO-CLUSTER-{}" PUSH_SYSTEM_USER_TASK_NAME = _("PUSH SYSTEM USER TO CLUSTER: {}")
PUSH_SYSTEM_USER_LOCK_KEY = "PUSH_SYSTEM_USER_TO_CLUSTER_LOCK_{}" PUSH_SYSTEM_USER_LOCK_KEY = "PUSH_SYSTEM_USER_TO_CLUSTER_LOCK_{}"
UPDATE_ASSETS_HARDWARE_TASK_NAME = 'UPDATE-ASSETS-HARDWARE-INFO' UPDATE_ASSETS_HARDWARE_TASK_NAME = _('UPDATE ASSETS HARDWARE INFO')
UPDATE_ASSETS_HARDWARE_PERIOD_LOCK_KEY = "UPDATE_ASSETS_HARDWARE_PERIOD_LOCK_KEY" UPDATE_ASSETS_HARDWARE_PERIOD_LOCK_KEY = "UPDATE_ASSETS_HARDWARE_PERIOD_LOCK_KEY"
UPDATE_ASSETS_HARDWARE_PERIOD_TASK_NAME = 'UPDATE-ASSETS-HARDWARE-INFO-PERIOD' UPDATE_ASSETS_HARDWARE_PERIOD_TASK_NAME = _('UPDATE ASSETS HARDWARE INFO PERIOD')
UPDATE_ASSETS_HARDWARE_TASKS = [ UPDATE_ASSETS_HARDWARE_TASKS = [
{ {
'name': UPDATE_ASSETS_HARDWARE_TASK_NAME, 'name': UPDATE_ASSETS_HARDWARE_TASK_NAME,
...@@ -20,8 +21,8 @@ UPDATE_ASSETS_HARDWARE_TASKS = [ ...@@ -20,8 +21,8 @@ UPDATE_ASSETS_HARDWARE_TASKS = [
] ]
TEST_ADMIN_USER_CONN_PERIOD_LOCK_KEY = "TEST_ADMIN_USER_CONN_PERIOD_KEY" TEST_ADMIN_USER_CONN_PERIOD_LOCK_KEY = "TEST_ADMIN_USER_CONN_PERIOD_KEY"
TEST_ADMIN_USER_CONN_PERIOD_TASK_NAME = "TEST_ADMIN_USER_CONN_PERIOD_TASK" TEST_ADMIN_USER_CONN_PERIOD_TASK_NAME = _("TEST ADMIN USER CONN PERIOD TASK")
TEST_ADMIN_USER_CONN_TASK_NAME = "TEST-ADMIN-USER-CONN-{}" TEST_ADMIN_USER_CONN_TASK_NAME = _("TEST ADMIN USER CONN: {}")
TEST_ADMIN_USER_CONN_LOCK_KEY = TEST_ADMIN_USER_CONN_TASK_NAME TEST_ADMIN_USER_CONN_LOCK_KEY = TEST_ADMIN_USER_CONN_TASK_NAME
ADMIN_USER_CONN_CACHE_KEY = "ADMIN_USER_CONN_{}" ADMIN_USER_CONN_CACHE_KEY = "ADMIN_USER_CONN_{}"
TEST_ADMIN_USER_CONN_TASKS = [ TEST_ADMIN_USER_CONN_TASKS = [
...@@ -34,12 +35,12 @@ TEST_ADMIN_USER_CONN_TASKS = [ ...@@ -34,12 +35,12 @@ TEST_ADMIN_USER_CONN_TASKS = [
] ]
ASSET_ADMIN_CONN_CACHE_KEY = "ASSET_ADMIN_USER_CONN_{}" ASSET_ADMIN_CONN_CACHE_KEY = "ASSET_ADMIN_USER_CONN_{}"
TEST_ASSET_CONN_TASK_NAME = "ASSET_CONN_TEST_MANUAL" TEST_ASSET_CONN_TASK_NAME = _("ASSET CONN TEST MANUAL")
TEST_SYSTEM_USER_CONN_PERIOD_LOCK_KEY = "TEST_SYSTEM_USER_CONN_PERIOD_KEY" TEST_SYSTEM_USER_CONN_PERIOD_LOCK_KEY = "TEST_SYSTEM_USER_CONN_PERIOD_KEY"
TEST_SYSTEM_USER_CONN_PERIOD_TASK_NAME = "TEST-SYSTEM-USER-CONN-PERIOD-TASK" TEST_SYSTEM_USER_CONN_PERIOD_TASK_NAME = _("TEST SYSTEM USER CONN PERIOD TASK")
TEST_SYSTEM_USER_CONN_CACHE_KEY_PREFIX = "SYSTEM_USER_CONN_" TEST_SYSTEM_USER_CONN_CACHE_KEY_PREFIX = "SYSTEM_USER_CONN_"
TEST_SYSTEM_USER_CONN_TASK_NAME = "TEST-SYSTEM-USER-CONN-{}" TEST_SYSTEM_USER_CONN_TASK_NAME = _("TEST SYSTEM USER CONN: {}")
TEST_SYSTEM_USER_CONN_LOCK_KEY = "TEST_SYSTEM_USER_CONN_{}" TEST_SYSTEM_USER_CONN_LOCK_KEY = "TEST_SYSTEM_USER_CONN_{}"
SYSTEM_USER_CONN_CACHE_KEY = "SYSTEM_USER_CONN_{}" SYSTEM_USER_CONN_CACHE_KEY = "SYSTEM_USER_CONN_{}"
TEST_SYSTEM_USER_CONN_TASKS = [ TEST_SYSTEM_USER_CONN_TASKS = [
......
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Jumpserver 0.3.3\n" "Project-Id-Version: Jumpserver 0.3.3\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-15 17:08+0800\n" "POT-Creation-Date: 2017-12-19 23:11+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: ibuler <ibuler@qq.com>\n" "Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: Jumpserver team<ibuler@qq.com>\n" "Language-Team: Jumpserver team<ibuler@qq.com>\n"
...@@ -17,13 +17,48 @@ msgstr "" ...@@ -17,13 +17,48 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: assets/forms.py:25 assets/forms.py:47 assets/forms.py:80 perms/forms.py:30 #: assets/const.py:6
#: perms/templates/perms/asset_permission_asset.html:137 users/forms.py:187 msgid "PUSH SYSTEM USER TO CLUSTER PERIOD TASK"
#: users/forms.py:213 msgstr "定期推送系统用户到集群"
#: assets/const.py:7
msgid "PUSH SYSTEM USER TO CLUSTER: {}"
msgstr "推送系统用户到集群: {}"
#: assets/const.py:11
msgid "UPDATE ASSETS HARDWARE INFO"
msgstr "更新资产硬件信息"
#: assets/const.py:13
msgid "UPDATE ASSETS HARDWARE INFO PERIOD"
msgstr "定期更新资产硬件信息"
#: assets/const.py:24
msgid "TEST ADMIN USER CONN PERIOD TASK"
msgstr "定期测试资产是否在线"
#: assets/const.py:25
msgid "TEST ADMIN USER CONN: {}"
msgstr "测试管理用户连接性"
#: assets/const.py:38
msgid "ASSET CONN TEST MANUAL"
msgstr "手动测试资产连接性"
#: assets/const.py:41
msgid "TEST SYSTEM USER CONN PERIOD TASK"
msgstr "定期测试系统用户连接性"
#: assets/const.py:43
msgid "TEST SYSTEM USER CONN: {}"
msgstr "测试系统用户连接性: {}"
#: assets/forms.py:25 assets/forms.py:47 assets/forms.py:86 perms/forms.py:30
#: perms/templates/perms/asset_permission_asset.html:127 users/forms.py:231
msgid "Select asset groups" msgid "Select asset groups"
msgstr "选择资产组" msgstr "选择资产组"
#: assets/forms.py:26 assets/templates/assets/admin_user_detail.html:110 #: assets/forms.py:26 assets/templates/assets/admin_user_detail.html:92
msgid "Select cluster" msgid "Select cluster"
msgstr "选择集群" msgstr "选择集群"
...@@ -39,66 +74,60 @@ msgstr "主机级别管理用户,如果没有设置则默认使用集群级别 ...@@ -39,66 +74,60 @@ msgstr "主机级别管理用户,如果没有设置则默认使用集群级别
msgid "Default using cluster admin user" msgid "Default using cluster admin user"
msgstr "默认使用管理用户" msgstr "默认使用管理用户"
#: assets/forms.py:63 assets/forms.py:67 assets/forms.py:102 #: assets/forms.py:63 assets/forms.py:68 assets/forms.py:115
#: assets/templates/assets/asset_group_detail.html:70 perms/forms.py:27 #: assets/templates/assets/asset_group_detail.html:70 perms/forms.py:27
#: perms/templates/perms/asset_permission_asset.html:109 users/forms.py:184 #: perms/templates/perms/asset_permission_asset.html:99 users/forms.py:228
#: users/forms.py:210
msgid "Select assets" msgid "Select assets"
msgstr "选择资产" msgstr "选择资产"
#: assets/forms.py:71 assets/models/asset.py:49 #: assets/forms.py:73 assets/models/asset.py:49
#: assets/templates/assets/admin_user_assets.html:61 #: assets/templates/assets/admin_user_assets.html:61
#: assets/templates/assets/asset_detail.html:69 #: assets/templates/assets/asset_detail.html:69
#: assets/templates/assets/asset_group_detail.html:47 #: assets/templates/assets/asset_group_detail.html:47
#: assets/templates/assets/asset_list.html:32 #: assets/templates/assets/asset_list.html:32
#: assets/templates/assets/cluster_assets.html:56 #: assets/templates/assets/cluster_assets.html:53
#: assets/templates/assets/system_user_asset.html:59 #: assets/templates/assets/system_user_asset.html:54
#: assets/templates/assets/user_asset_list.html:35 #: assets/templates/assets/user_asset_list.html:35
#: perms/templates/perms/asset_permission_asset.html:66 #: perms/templates/perms/asset_permission_asset.html:56
#: users/templates/users/user_granted_asset.html:54 #: users/templates/users/user_group_granted_asset.html:51
#: users/templates/users/user_group_granted_asset.html:54
msgid "Port" msgid "Port"
msgstr "端口" msgstr "端口"
#: assets/forms.py:99 assets/templates/assets/asset_group_list.html:16 #: assets/forms.py:112 assets/templates/assets/asset_group_list.html:16
#: assets/templates/assets/system_user_list.html:19 #: assets/templates/assets/system_user_list.html:19 perms/models.py:17
#: perms/templates/perms/asset_permission_create_update.html:40 #: perms/templates/perms/asset_permission_create_update.html:40
#: perms/templates/perms/asset_permission_list.html:13 templates/_nav.html:22 #: perms/templates/perms/asset_permission_list.html:22 templates/_nav.html:22
#: terminal/backends/command/models.py:11 terminal/models.py:91 #: terminal/backends/command/models.py:11 terminal/models.py:91
#: terminal/templates/terminal/command_list.html:39 #: terminal/templates/terminal/command_list.html:39
#: terminal/templates/terminal/session_list.html:38 #: terminal/templates/terminal/session_list.html:38
#: terminal/templates/terminal/session_list.html:69 #: terminal/templates/terminal/session_list.html:69
#: users/templates/users/user_asset_permission.html:55 #: users/templates/users/user_granted_asset.html:82
#: users/templates/users/user_granted_asset.html:89 #: users/templates/users/user_group_granted_asset.html:86
#: users/templates/users/user_group_asset_permission.html:55
#: users/templates/users/user_group_granted_asset.html:89
msgid "Asset" msgid "Asset"
msgstr "资产" msgstr "资产"
#: assets/forms.py:134 assets/forms.py:191 assets/forms.py:247 #: assets/forms.py:147 assets/forms.py:205 assets/forms.py:261
#: assets/forms.py:270 assets/models/cluster.py:18 assets/models/group.py:21 #: assets/models/cluster.py:18 assets/models/group.py:21
#: assets/models/user.py:25 assets/templates/assets/admin_user_detail.html:56 #: assets/models/user.py:27 assets/templates/assets/admin_user_detail.html:56
#: assets/templates/assets/admin_user_list.html:22 #: assets/templates/assets/admin_user_list.html:22
#: assets/templates/assets/asset_group_list.html:15 #: assets/templates/assets/asset_group_list.html:15
#: assets/templates/assets/cluster_detail.html:57 #: assets/templates/assets/cluster_detail.html:57
#: assets/templates/assets/cluster_list.html:18 #: assets/templates/assets/cluster_list.html:18
#: assets/templates/assets/system_user_detail.html:58 #: assets/templates/assets/system_user_detail.html:53
#: assets/templates/assets/system_user_list.html:17 ops/models.py:24 #: assets/templates/assets/system_user_list.html:17 ops/models.py:24
#: ops/templates/ops/task_detail.html:56 ops/templates/ops/task_list.html:39 #: ops/templates/ops/task_detail.html:56 ops/templates/ops/task_list.html:39
#: perms/models.py:20 #: perms/models.py:14
#: perms/templates/perms/asset_permission_create_update.html:33 #: perms/templates/perms/asset_permission_create_update.html:33
#: perms/templates/perms/asset_permission_detail.html:62 #: perms/templates/perms/asset_permission_detail.html:62
#: perms/templates/perms/asset_permission_list.html:10 #: perms/templates/perms/asset_permission_list.html:19
#: perms/templates/perms/asset_permission_user.html:64 terminal/models.py:14 #: perms/templates/perms/asset_permission_user.html:54 terminal/models.py:14
#: terminal/models.py:115 terminal/templates/terminal/terminal_detail.html:43 #: terminal/models.py:115 terminal/templates/terminal/terminal_detail.html:43
#: terminal/templates/terminal/terminal_list.html:29 users/models/group.py:21 #: terminal/templates/terminal/terminal_list.html:29 users/models/group.py:21
#: users/models/user.py:32 users/templates/users/_select_user_modal.html:13 #: users/models/user.py:32 users/templates/users/_select_user_modal.html:13
#: users/templates/users/user_asset_permission.html:54 #: users/templates/users/user_detail.html:62
#: users/templates/users/user_detail.html:65 #: users/templates/users/user_granted_asset.html:81
#: users/templates/users/user_granted_asset.html:88 #: users/templates/users/user_group_detail.html:55
#: users/templates/users/user_group_asset_permission.html:54 #: users/templates/users/user_group_granted_asset.html:85
#: users/templates/users/user_group_detail.html:58
#: users/templates/users/user_group_granted_asset.html:88
#: users/templates/users/user_group_list.html:12 #: users/templates/users/user_group_list.html:12
#: users/templates/users/user_list.html:23 #: users/templates/users/user_list.html:23
#: users/templates/users/user_profile.html:51 #: users/templates/users/user_profile.html:51
...@@ -106,39 +135,39 @@ msgstr "资产" ...@@ -106,39 +135,39 @@ msgstr "资产"
msgid "Name" msgid "Name"
msgstr "名称" msgstr "名称"
#: assets/forms.py:149 #: assets/forms.py:162
msgid "If also set private key, use that first" msgid "If also set private key, use that first"
msgstr "如果设置私钥,则优先使用密钥" msgstr "如果设置私钥,则优先使用密钥"
#: assets/forms.py:174 assets/forms.py:229 assets/forms.py:293 #: assets/forms.py:188 assets/forms.py:243 assets/forms.py:305
msgid "Invalid private key" msgid "Invalid private key"
msgstr "ssh密钥不合法" msgstr "ssh密钥不合法"
#: assets/forms.py:184 #: assets/forms.py:198
msgid "Password and private key file must be input one" msgid "Password and private key file must be input one"
msgstr "密码和私钥, 必须输入一个" msgstr "密码和私钥, 必须输入一个"
#: assets/forms.py:192 assets/forms.py:248 assets/forms.py:271 #: assets/forms.py:206 assets/forms.py:262 assets/models/user.py:28
#: assets/models/user.py:26 assets/templates/assets/admin_user_detail.html:60 #: assets/templates/assets/admin_user_detail.html:60
#: assets/templates/assets/admin_user_list.html:23 #: assets/templates/assets/admin_user_list.html:23
#: assets/templates/assets/system_user_detail.html:62 #: assets/templates/assets/system_user_detail.html:57
#: assets/templates/assets/system_user_list.html:18 #: assets/templates/assets/system_user_list.html:18
#: perms/templates/perms/asset_permission_user.html:65 users/forms.py:14 #: perms/templates/perms/asset_permission_user.html:55 users/forms.py:14
#: users/models/authentication.py:44 users/models/user.py:31 #: users/models/authentication.py:44 users/models/user.py:31
#: users/templates/users/_select_user_modal.html:14 #: users/templates/users/_select_user_modal.html:14
#: users/templates/users/login.html:53 #: users/templates/users/login.html:53
#: users/templates/users/login_log_list.html:48 #: users/templates/users/login_log_list.html:48
#: users/templates/users/user_detail.html:69 #: users/templates/users/user_detail.html:66
#: users/templates/users/user_list.html:24 #: users/templates/users/user_list.html:24
#: users/templates/users/user_profile.html:47 #: users/templates/users/user_profile.html:47
msgid "Username" msgid "Username"
msgstr "用户名" msgstr "用户名"
#: assets/forms.py:236 assets/forms.py:299 #: assets/forms.py:250 assets/forms.py:311
msgid "Auth info required, private_key or password" msgid "Auth info required, private_key or password"
msgstr "密钥和密码必须填写一个" msgstr "密钥和密码必须填写一个"
#: assets/forms.py:251 assets/forms.py:274 #: assets/forms.py:265
msgid " Select clusters" msgid " Select clusters"
msgstr "选择集群" msgstr "选择集群"
...@@ -178,13 +207,13 @@ msgstr "存储" ...@@ -178,13 +207,13 @@ msgstr "存储"
#: assets/templates/assets/asset_detail.html:61 #: assets/templates/assets/asset_detail.html:61
#: assets/templates/assets/asset_group_detail.html:46 #: assets/templates/assets/asset_group_detail.html:46
#: assets/templates/assets/asset_list.html:31 #: assets/templates/assets/asset_list.html:31
#: assets/templates/assets/cluster_assets.html:55 #: assets/templates/assets/cluster_assets.html:52
#: assets/templates/assets/system_user_asset.html:58 #: assets/templates/assets/system_user_asset.html:53
#: assets/templates/assets/user_asset_list.html:34 #: assets/templates/assets/user_asset_list.html:34
#: perms/templates/perms/asset_permission_asset.html:65 #: perms/templates/perms/asset_permission_asset.html:55
#: users/templates/users/login_log_list.html:51 #: users/templates/users/login_log_list.html:51
#: users/templates/users/user_granted_asset.html:53 #: users/templates/users/user_granted_asset.html:49
#: users/templates/users/user_group_granted_asset.html:53 #: users/templates/users/user_group_granted_asset.html:50
msgid "IP" msgid "IP"
msgstr "IP" msgstr "IP"
...@@ -192,21 +221,21 @@ msgstr "IP" ...@@ -192,21 +221,21 @@ msgstr "IP"
#: assets/templates/assets/asset_detail.html:57 #: assets/templates/assets/asset_detail.html:57
#: assets/templates/assets/asset_group_detail.html:45 #: assets/templates/assets/asset_group_detail.html:45
#: assets/templates/assets/asset_list.html:30 #: assets/templates/assets/asset_list.html:30
#: assets/templates/assets/cluster_assets.html:54 #: assets/templates/assets/cluster_assets.html:51
#: assets/templates/assets/system_user_asset.html:57 #: assets/templates/assets/system_user_asset.html:52
#: assets/templates/assets/user_asset_list.html:33 #: assets/templates/assets/user_asset_list.html:33
#: perms/templates/perms/asset_permission_asset.html:64 #: perms/templates/perms/asset_permission_asset.html:54
#: users/templates/users/user_granted_asset.html:52 #: users/templates/users/user_granted_asset.html:48
#: users/templates/users/user_group_granted_asset.html:52 #: users/templates/users/user_group_granted_asset.html:49
msgid "Hostname" msgid "Hostname"
msgstr "主机名" msgstr "主机名"
#: assets/models/asset.py:50 assets/templates/assets/asset_detail.html:205 #: assets/models/asset.py:50 assets/templates/assets/asset_detail.html:213
#: assets/views/asset.py:217 assets/views/asset.py:257 #: assets/views/asset.py:217 assets/views/asset.py:257
msgid "Asset groups" msgid "Asset groups"
msgstr "资产组" msgstr "资产组"
#: assets/models/asset.py:51 assets/models/user.py:198 #: assets/models/asset.py:51 assets/models/user.py:201
#: assets/templates/assets/asset_detail.html:85 templates/_nav.html:24 #: assets/templates/assets/asset_detail.html:85 templates/_nav.html:24
msgid "Cluster" msgid "Cluster"
msgstr "集群" msgstr "集群"
...@@ -310,40 +339,40 @@ msgid "Hostname raw" ...@@ -310,40 +339,40 @@ msgid "Hostname raw"
msgstr "主机名原始" msgstr "主机名原始"
#: assets/models/asset.py:85 assets/models/cluster.py:28 #: assets/models/asset.py:85 assets/models/cluster.py:28
#: assets/models/group.py:22 assets/models/user.py:33 #: assets/models/group.py:22 assets/models/user.py:35
#: assets/templates/assets/admin_user_detail.html:68 #: assets/templates/assets/admin_user_detail.html:68
#: assets/templates/assets/asset_detail.html:149 #: assets/templates/assets/asset_detail.html:149
#: assets/templates/assets/cluster_detail.html:93 #: assets/templates/assets/cluster_detail.html:93
#: assets/templates/assets/system_user_detail.html:96 perms/models.py:36 #: assets/templates/assets/system_user_detail.html:91 perms/models.py:22
#: perms/templates/perms/asset_permission_detail.html:94 #: perms/templates/perms/asset_permission_detail.html:94
#: users/models/user.py:47 users/templates/users/user_detail.html:101 #: users/models/user.py:47 users/templates/users/user_detail.html:98
msgid "Created by" msgid "Created by"
msgstr "创建者" msgstr "创建者"
#: assets/models/asset.py:86 assets/models/cluster.py:26 #: assets/models/asset.py:86 assets/models/cluster.py:26
#: assets/models/group.py:23 assets/templates/assets/admin_user_detail.html:64 #: assets/models/group.py:23 assets/templates/assets/admin_user_detail.html:64
#: assets/templates/assets/cluster_detail.html:89 #: assets/templates/assets/cluster_detail.html:89
#: assets/templates/assets/system_user_detail.html:92 #: assets/templates/assets/system_user_detail.html:87
#: ops/templates/ops/task_detail.html:60 perms/models.py:38 #: ops/templates/ops/task_detail.html:60 perms/models.py:23
#: perms/templates/perms/asset_permission_detail.html:90 #: perms/templates/perms/asset_permission_detail.html:90
#: terminal/templates/terminal/terminal_detail.html:59 users/models/group.py:24 #: terminal/templates/terminal/terminal_detail.html:59 users/models/group.py:24
#: users/templates/users/user_group_detail.html:66 #: users/templates/users/user_group_detail.html:63
msgid "Date created" msgid "Date created"
msgstr "创建日期" msgstr "创建日期"
#: assets/models/asset.py:87 assets/models/cluster.py:29 #: assets/models/asset.py:87 assets/models/cluster.py:29
#: assets/models/group.py:24 assets/models/user.py:30 #: assets/models/group.py:24 assets/models/user.py:32
#: assets/templates/assets/admin_user_detail.html:72 #: assets/templates/assets/admin_user_detail.html:72
#: assets/templates/assets/admin_user_list.html:26 #: assets/templates/assets/admin_user_list.html:26
#: assets/templates/assets/asset_detail.html:157 #: assets/templates/assets/asset_detail.html:157
#: assets/templates/assets/asset_group_list.html:17 #: assets/templates/assets/asset_group_list.html:17
#: assets/templates/assets/cluster_detail.html:97 #: assets/templates/assets/cluster_detail.html:97
#: assets/templates/assets/system_user_detail.html:100 #: assets/templates/assets/system_user_detail.html:95
#: assets/templates/assets/system_user_list.html:21 perms/models.py:39 #: assets/templates/assets/system_user_list.html:23 perms/models.py:24
#: perms/templates/perms/asset_permission_detail.html:98 terminal/models.py:22 #: perms/templates/perms/asset_permission_detail.html:98 terminal/models.py:22
#: terminal/templates/terminal/terminal_detail.html:63 users/models/group.py:22 #: terminal/templates/terminal/terminal_detail.html:63 users/models/group.py:22
#: users/models/user.py:44 users/templates/users/user_detail.html:113 #: users/models/user.py:44 users/templates/users/user_detail.html:110
#: users/templates/users/user_group_detail.html:70 #: users/templates/users/user_group_detail.html:67
#: users/templates/users/user_group_list.html:14 #: users/templates/users/user_group_list.html:14
#: users/templates/users/user_profile.html:118 #: users/templates/users/user_profile.html:118
msgid "Comment" msgid "Comment"
...@@ -360,7 +389,7 @@ msgstr "联系人" ...@@ -360,7 +389,7 @@ msgstr "联系人"
#: assets/models/cluster.py:22 assets/templates/assets/cluster_detail.html:69 #: assets/models/cluster.py:22 assets/templates/assets/cluster_detail.html:69
#: assets/templates/assets/cluster_list.html:22 users/models/user.py:38 #: assets/templates/assets/cluster_list.html:22 users/models/user.py:38
#: users/templates/users/user_detail.html:78 #: users/templates/users/user_detail.html:75
msgid "Phone" msgid "Phone"
msgstr "手机" msgstr "手机"
...@@ -397,45 +426,43 @@ msgstr "默认Cluster" ...@@ -397,45 +426,43 @@ msgstr "默认Cluster"
msgid "Default asset group" msgid "Default asset group"
msgstr "默认资产组" msgstr "默认资产组"
#: assets/models/user.py:27 users/forms.py:16 #: assets/models/user.py:29 users/forms.py:16 users/forms.py:24
#: users/templates/users/login.html:56 #: users/templates/users/login.html:56
#: users/templates/users/reset_password.html:52 #: users/templates/users/reset_password.html:52
#: users/templates/users/user_create.html:9
#: users/templates/users/user_create.html:11 #: users/templates/users/user_create.html:11
#: users/templates/users/user_password_update.html:40 #: users/templates/users/user_password_update.html:40
#: users/templates/users/user_profile_update.html:40 #: users/templates/users/user_profile_update.html:40
#: users/templates/users/user_pubkey_update.html:40 #: users/templates/users/user_pubkey_update.html:40
#: users/templates/users/user_update.html:5
#: users/templates/users/user_update.html:7
msgid "Password" msgid "Password"
msgstr "密码" msgstr "密码"
#: assets/models/user.py:28 #: assets/models/user.py:30
msgid "SSH private key" msgid "SSH private key"
msgstr "ssh密钥" msgstr "ssh密钥"
#: assets/models/user.py:29 #: assets/models/user.py:31
msgid "SSH public key" msgid "SSH public key"
msgstr "ssh公钥" msgstr "ssh公钥"
#: assets/models/user.py:199 #: assets/models/user.py:202
msgid "Priority" msgid "Priority"
msgstr "" msgstr ""
#: assets/models/user.py:200 assets/templates/assets/system_user_detail.html:66 #: assets/models/user.py:203 assets/templates/assets/system_user_detail.html:61
msgid "Protocol" msgid "Protocol"
msgstr "协议" msgstr "协议"
#: assets/models/user.py:201 assets/templates/assets/_system_user.html:59 #: assets/models/user.py:204 assets/templates/assets/_system_user.html:59
#: assets/templates/assets/system_user_detail.html:118 #: assets/templates/assets/system_user_detail.html:113
#: assets/templates/assets/system_user_update.html:11
msgid "Auto push" msgid "Auto push"
msgstr "自动推送" msgstr "自动推送"
#: assets/models/user.py:202 assets/templates/assets/system_user_detail.html:70 #: assets/models/user.py:205 assets/templates/assets/system_user_detail.html:65
msgid "Sudo" msgid "Sudo"
msgstr "Sudo" msgstr "Sudo"
#: assets/models/user.py:203 assets/templates/assets/system_user_detail.html:75 #: assets/models/user.py:206 assets/templates/assets/system_user_detail.html:70
msgid "Shell" msgid "Shell"
msgstr "Shell" msgstr "Shell"
...@@ -453,13 +480,13 @@ msgid "Hint: only change the field you want to update." ...@@ -453,13 +480,13 @@ msgid "Hint: only change the field you want to update."
msgstr "仅修改你需要更新的字段" msgstr "仅修改你需要更新的字段"
#: assets/templates/assets/_asset_group_bulk_update_modal.html:12 #: assets/templates/assets/_asset_group_bulk_update_modal.html:12
#: assets/templates/assets/system_user_asset.html:26 #: assets/templates/assets/system_user_asset.html:21
#: assets/views/admin_user.py:27 assets/views/cluster.py:22 #: assets/views/admin_user.py:27 assets/views/cluster.py:22
#: assets/views/cluster.py:87 assets/views/group.py:30 assets/views/group.py:53 #: assets/views/cluster.py:80 assets/views/cluster.py:97
#: assets/views/group.py:71 assets/views/group.py:93 #: assets/views/group.py:30 assets/views/group.py:53 assets/views/group.py:71
#: assets/views/system_user.py:30 assets/views/system_user.py:49 #: assets/views/group.py:93 assets/views/system_user.py:29
#: assets/views/system_user.py:72 assets/views/system_user.py:92 #: assets/views/system_user.py:48 assets/views/system_user.py:71
#: templates/_nav.html:19 #: assets/views/system_user.py:91 templates/_nav.html:19
msgid "Assets" msgid "Assets"
msgstr "资产管理" msgstr "资产管理"
...@@ -503,7 +530,7 @@ msgstr "如果设置了id,则会使用该行信息更新该id的资产" ...@@ -503,7 +530,7 @@ msgstr "如果设置了id,则会使用该行信息更新该id的资产"
#: assets/templates/assets/_system_user.html:16 #: assets/templates/assets/_system_user.html:16
#: assets/templates/assets/system_user_list.html:9 #: assets/templates/assets/system_user_list.html:9
#: assets/views/system_user.py:50 #: assets/views/system_user.py:49
msgid "Create system user" msgid "Create system user"
msgstr "创建系统用户" msgstr "创建系统用户"
...@@ -517,9 +544,9 @@ msgstr "基本" ...@@ -517,9 +544,9 @@ msgstr "基本"
#: assets/templates/assets/_system_user.html:45 #: assets/templates/assets/_system_user.html:45
#: assets/templates/assets/asset_create.html:24 #: assets/templates/assets/asset_create.html:24
#: assets/templates/assets/asset_update.html:29 #: assets/templates/assets/asset_update.html:29
#: assets/templates/assets/system_user_asset.html:21 #: assets/templates/assets/system_user_update.html:7
#: assets/templates/assets/system_user_auth.html:18 #: users/templates/users/user_create.html:9
#: assets/templates/assets/system_user_detail.html:22 #: users/templates/users/user_update.html:6
msgid "Auth" msgid "Auth"
msgstr "认证" msgstr "认证"
...@@ -542,13 +569,10 @@ msgstr "其它" ...@@ -542,13 +569,10 @@ msgstr "其它"
#: assets/templates/assets/asset_create.html:40 #: assets/templates/assets/asset_create.html:40
#: assets/templates/assets/asset_update.html:56 #: assets/templates/assets/asset_update.html:56
#: assets/templates/assets/cluster_create_update.html:53 #: assets/templates/assets/cluster_create_update.html:53
#: assets/templates/assets/system_user_auth.html:59
#: perms/templates/perms/asset_permission_create_update.html:67 #: perms/templates/perms/asset_permission_create_update.html:67
#: terminal/templates/terminal/terminal_update.html:45 #: terminal/templates/terminal/terminal_update.html:45
#: users/templates/users/_user.html:49 #: users/templates/users/_user.html:49
#: users/templates/users/user_bulk_update.html:23 #: users/templates/users/user_bulk_update.html:23
#: users/templates/users/user_detail.html:162
#: users/templates/users/user_detail.html:170
#: users/templates/users/user_password_update.html:58 #: users/templates/users/user_password_update.html:58
#: users/templates/users/user_profile.html:139 #: users/templates/users/user_profile.html:139
#: users/templates/users/user_profile.html:147 #: users/templates/users/user_profile.html:147
...@@ -561,22 +585,15 @@ msgstr "重置" ...@@ -561,22 +585,15 @@ msgstr "重置"
#: assets/templates/assets/admin_user_create_update.html:46 #: assets/templates/assets/admin_user_create_update.html:46
#: assets/templates/assets/asset_bulk_update.html:24 #: assets/templates/assets/asset_bulk_update.html:24
#: assets/templates/assets/asset_create.html:41 #: assets/templates/assets/asset_create.html:41
#: assets/templates/assets/asset_group_list.html:32
#: assets/templates/assets/asset_list.html:54 #: assets/templates/assets/asset_list.html:54
#: assets/templates/assets/asset_update.html:57 #: assets/templates/assets/asset_update.html:57
#: assets/templates/assets/cluster_create_update.html:54 #: assets/templates/assets/cluster_create_update.html:54
#: assets/templates/assets/cluster_list.html:37
#: assets/templates/assets/system_user_auth.html:60
#: assets/templates/assets/system_user_list.html:36
#: perms/templates/perms/asset_permission_create_update.html:68 #: perms/templates/perms/asset_permission_create_update.html:68
#: terminal/templates/terminal/terminal_update.html:46 #: terminal/templates/terminal/terminal_update.html:46
#: users/templates/users/_user.html:50 #: users/templates/users/_user.html:50
#: users/templates/users/first_login.html:62 #: users/templates/users/first_login.html:62
#: users/templates/users/forgot_password.html:44 #: users/templates/users/forgot_password.html:44
#: users/templates/users/user_asset_permission.html:99
#: users/templates/users/user_bulk_update.html:24 #: users/templates/users/user_bulk_update.html:24
#: users/templates/users/user_group_asset_permission.html:100
#: users/templates/users/user_group_list.html:26
#: users/templates/users/user_list.html:44 #: users/templates/users/user_list.html:44
#: users/templates/users/user_password_update.html:59 #: users/templates/users/user_password_update.html:59
#: users/templates/users/user_profile_update.html:64 #: users/templates/users/user_profile_update.html:64
...@@ -589,7 +606,6 @@ msgstr "提交" ...@@ -589,7 +606,6 @@ msgstr "提交"
#: assets/templates/assets/cluster_assets.html:20 #: assets/templates/assets/cluster_assets.html:20
#: assets/templates/assets/cluster_detail.html:17 #: assets/templates/assets/cluster_detail.html:17
#: assets/templates/assets/system_user_asset.html:17 #: assets/templates/assets/system_user_asset.html:17
#: assets/templates/assets/system_user_auth.html:14
#: assets/templates/assets/system_user_detail.html:18 #: assets/templates/assets/system_user_detail.html:18
#: ops/templates/ops/task_adhoc.html:109 #: ops/templates/ops/task_adhoc.html:109
#: ops/templates/ops/task_history.html:118 #: ops/templates/ops/task_history.html:118
...@@ -608,33 +624,31 @@ msgstr "资产列表" ...@@ -608,33 +624,31 @@ msgstr "资产列表"
#: assets/templates/assets/admin_user_assets.html:37 #: assets/templates/assets/admin_user_assets.html:37
#: assets/templates/assets/asset_group_detail.html:26 #: assets/templates/assets/asset_group_detail.html:26
#: perms/templates/perms/asset_permission_asset.html:45 #: perms/templates/perms/asset_permission_asset.html:35
msgid "Asset list of " msgid "Asset list of "
msgstr "资产列表" msgstr "资产列表"
#: assets/templates/assets/admin_user_assets.html:62 #: assets/templates/assets/admin_user_assets.html:62
#: assets/templates/assets/asset_group_detail.html:48 #: assets/templates/assets/asset_group_detail.html:48
#: assets/templates/assets/asset_list.html:33 #: assets/templates/assets/asset_list.html:33
#: assets/templates/assets/cluster_assets.html:57 #: assets/templates/assets/cluster_assets.html:54
#: assets/templates/assets/user_asset_list.html:36 #: assets/templates/assets/user_asset_list.html:36
#: users/templates/users/login_log_list.html:49 #: users/templates/users/login_log_list.html:49
msgid "Type" msgid "Type"
msgstr "类型" msgstr "类型"
#: assets/templates/assets/admin_user_assets.html:63 #: assets/templates/assets/admin_user_assets.html:63
#: assets/templates/assets/cluster_assets.html:58 #: assets/templates/assets/asset_group_detail.html:49
#: assets/templates/assets/user_asset_list.html:39 #: assets/templates/assets/cluster_assets.html:55
#: users/templates/users/user_asset_permission.html:58 #: assets/templates/assets/user_asset_list.html:40
#: users/templates/users/user_granted_asset.html:56 #: terminal/templates/terminal/terminal_list.html:35
#: users/templates/users/user_group_asset_permission.html:58 msgid "Alive"
#: users/templates/users/user_group_granted_asset.html:56 msgstr "在线"
msgid "Valid"
msgstr "可用"
#: assets/templates/assets/admin_user_assets.html:75 #: assets/templates/assets/admin_user_assets.html:75
#: assets/templates/assets/admin_user_detail.html:83 #: assets/templates/assets/cluster_assets.html:68
#: assets/templates/assets/system_user_asset.html:72 #: assets/templates/assets/system_user_asset.html:67
#: assets/templates/assets/system_user_detail.html:112 #: assets/templates/assets/system_user_detail.html:107
#: perms/templates/perms/asset_permission_detail.html:110 #: perms/templates/perms/asset_permission_detail.html:110
msgid "Quick update" msgid "Quick update"
msgstr "快速更新" msgstr "快速更新"
...@@ -642,51 +656,46 @@ msgstr "快速更新" ...@@ -642,51 +656,46 @@ msgstr "快速更新"
#: assets/templates/assets/admin_user_assets.html:81 #: assets/templates/assets/admin_user_assets.html:81
#, fuzzy #, fuzzy
#| msgid "Retest asset connectivity" #| msgid "Retest asset connectivity"
msgid "Retest connectivity" msgid "Test connective"
msgstr "重置资产连接性" msgstr "重置资产连接性"
#: assets/templates/assets/admin_user_assets.html:84 #: assets/templates/assets/admin_user_assets.html:84
#: perms/templates/perms/asset_permission_detail.html:133 #: assets/templates/assets/asset_detail.html:202
msgid "Start" #: assets/templates/assets/system_user_asset.html:84
msgstr "开始" msgid "Test"
msgstr ""
#: assets/templates/assets/admin_user_assets.html:147
msgid "Task has been send, seen left asset status"
msgstr ""
#: assets/templates/assets/admin_user_create_update.html:16 #: assets/templates/assets/admin_user_create_update.html:16
#: assets/templates/assets/admin_user_list.html:14 #: assets/templates/assets/admin_user_list.html:14
msgid "Create admin user" msgid "Create admin user"
msgstr "创建管理用户" msgstr "创建管理用户"
#: assets/templates/assets/admin_user_detail.html:89 #: assets/templates/assets/admin_user_detail.html:84
msgid "Test auth all assets manual"
msgstr ""
#: assets/templates/assets/admin_user_detail.html:92
#: ops/templates/ops/task_list.html:69
msgid "Run"
msgstr ""
#: assets/templates/assets/admin_user_detail.html:102
#, fuzzy #, fuzzy
#| msgid "Select asset admin user" #| msgid "Select asset admin user"
msgid "Using this as cluster admin user" msgid "Using this as cluster admin user"
msgstr "选择资产管理用户" msgstr "选择资产管理用户"
#: assets/templates/assets/admin_user_detail.html:119 #: assets/templates/assets/admin_user_detail.html:101
#: assets/templates/assets/asset_detail.html:222 #: assets/templates/assets/asset_detail.html:230
#: assets/templates/assets/asset_group_list.html:100 #: assets/templates/assets/asset_group_list.html:87
#: assets/templates/assets/asset_list.html:199 #: assets/templates/assets/asset_list.html:199
#: assets/templates/assets/cluster_assets.html:87 #: assets/templates/assets/cluster_assets.html:104
#: assets/templates/assets/cluster_assets.html:252 #: assets/templates/assets/cluster_list.html:88
#: assets/templates/assets/cluster_list.html:100 #: assets/templates/assets/system_user_detail.html:159
#: assets/templates/assets/system_user_detail.html:164 #: assets/templates/assets/system_user_list.html:127
#: assets/templates/assets/system_user_list.html:102
#: assets/templates/assets/user_asset_list.html:165 templates/_modal.html:16 #: assets/templates/assets/user_asset_list.html:165 templates/_modal.html:16
#: terminal/templates/terminal/session_detail.html:108 #: terminal/templates/terminal/session_detail.html:108
#: users/templates/users/user_detail.html:341 #: users/templates/users/user_detail.html:338
#: users/templates/users/user_detail.html:366 #: users/templates/users/user_detail.html:363
#: users/templates/users/user_detail.html:389 #: users/templates/users/user_detail.html:386
#: users/templates/users/user_group_create_update.html:45 #: users/templates/users/user_group_create_update.html:46
#: users/templates/users/user_group_list.html:92 #: users/templates/users/user_group_list.html:82
#: users/templates/users/user_list.html:191 #: users/templates/users/user_list.html:182
#: users/templates/users/user_profile.html:181 #: users/templates/users/user_profile.html:181
msgid "Confirm" msgid "Confirm"
msgstr "确认" msgstr "确认"
...@@ -698,7 +707,7 @@ msgid "Asset num" ...@@ -698,7 +707,7 @@ msgid "Asset num"
msgstr "资产数量" msgstr "资产数量"
#: assets/templates/assets/admin_user_list.html:25 #: assets/templates/assets/admin_user_list.html:25
#: assets/templates/assets/system_user_list.html:20 #: assets/templates/assets/system_user_list.html:21
msgid "Unreachable" msgid "Unreachable"
msgstr "不可达" msgstr "不可达"
...@@ -706,11 +715,12 @@ msgstr "不可达" ...@@ -706,11 +715,12 @@ msgstr "不可达"
#: assets/templates/assets/asset_group_detail.html:50 #: assets/templates/assets/asset_group_detail.html:50
#: assets/templates/assets/asset_group_list.html:18 #: assets/templates/assets/asset_group_list.html:18
#: assets/templates/assets/asset_list.html:38 #: assets/templates/assets/asset_list.html:38
#: assets/templates/assets/cluster_assets.html:56
#: assets/templates/assets/cluster_list.html:24 #: assets/templates/assets/cluster_list.html:24
#: assets/templates/assets/system_user_list.html:22 #: assets/templates/assets/system_user_list.html:24
#: ops/templates/ops/task_adhoc.html:61 ops/templates/ops/task_history.html:61 #: ops/templates/ops/task_adhoc.html:61 ops/templates/ops/task_history.html:61
#: ops/templates/ops/task_list.html:46 #: ops/templates/ops/task_list.html:46
#: perms/templates/perms/asset_permission_list.html:17 #: perms/templates/perms/asset_permission_list.html:26
#: terminal/templates/terminal/session_list.html:75 #: terminal/templates/terminal/session_list.html:75
#: terminal/templates/terminal/terminal_list.html:36 #: terminal/templates/terminal/terminal_list.html:36
#: users/templates/users/user_group_list.html:15 #: users/templates/users/user_group_list.html:15
...@@ -719,28 +729,30 @@ msgid "Action" ...@@ -719,28 +729,30 @@ msgid "Action"
msgstr "动作" msgstr "动作"
#: assets/templates/assets/admin_user_list.html:47 #: assets/templates/assets/admin_user_list.html:47
#: assets/templates/assets/asset_group_detail.html:190 #: assets/templates/assets/asset_group_detail.html:172
#: assets/templates/assets/asset_group_list.html:55 #: assets/templates/assets/asset_group_list.html:42
#: assets/templates/assets/asset_list.html:95 #: assets/templates/assets/asset_list.html:95
#: assets/templates/assets/cluster_list.html:56 #: assets/templates/assets/cluster_assets.html:170
#: assets/templates/assets/system_user_list.html:58 #: assets/templates/assets/cluster_list.html:44
#: perms/templates/perms/asset_permission_list.html:42 #: assets/templates/assets/system_user_list.html:77
#: perms/templates/perms/asset_permission_list.html:67
#: terminal/templates/terminal/terminal_list.html:71 #: terminal/templates/terminal/terminal_list.html:71
#: users/templates/users/user_group_list.html:50 #: users/templates/users/user_group_list.html:39
#: users/templates/users/user_list.html:92 #: users/templates/users/user_list.html:76
msgid "Update" msgid "Update"
msgstr "更新" msgstr "更新"
#: assets/templates/assets/admin_user_list.html:48 #: assets/templates/assets/admin_user_list.html:48
#: assets/templates/assets/asset_group_list.html:56 #: assets/templates/assets/asset_group_list.html:43
#: assets/templates/assets/asset_list.html:96 #: assets/templates/assets/asset_list.html:96
#: assets/templates/assets/cluster_list.html:57 #: assets/templates/assets/cluster_list.html:45
#: assets/templates/assets/system_user_list.html:59 #: assets/templates/assets/system_user_list.html:78
#: ops/templates/ops/task_list.html:70 #: ops/templates/ops/task_list.html:70
#: perms/templates/perms/asset_permission_list.html:45 #: perms/templates/perms/asset_permission_list.html:68
#: terminal/templates/terminal/terminal_list.html:73 #: terminal/templates/terminal/terminal_list.html:73
#: users/templates/users/user_group_list.html:52 #: users/templates/users/user_group_list.html:41
#: users/templates/users/user_list.html:93 #: users/templates/users/user_list.html:80
#: users/templates/users/user_list.html:84
msgid "Delete" msgid "Delete"
msgstr "删除" msgstr "删除"
...@@ -749,7 +761,7 @@ msgstr "删除" ...@@ -749,7 +761,7 @@ msgstr "删除"
msgid "Group" msgid "Group"
msgstr "组" msgstr "组"
#: assets/templates/assets/asset_detail.html:20 assets/views/cluster.py:88 #: assets/templates/assets/asset_detail.html:20 assets/views/cluster.py:98
msgid "Asset detail" msgid "Asset detail"
msgstr "资产详情" msgstr "资产详情"
...@@ -766,24 +778,24 @@ msgid "Disk" ...@@ -766,24 +778,24 @@ msgid "Disk"
msgstr "硬盘" msgstr "硬盘"
#: assets/templates/assets/asset_detail.html:153 #: assets/templates/assets/asset_detail.html:153
#: users/templates/users/user_detail.html:105 #: users/templates/users/user_detail.html:102
#: users/templates/users/user_profile.html:88 #: users/templates/users/user_profile.html:88
msgid "Date joined" msgid "Date joined"
msgstr "创建日期" msgstr "创建日期"
#: assets/templates/assets/asset_detail.html:169 #: assets/templates/assets/asset_detail.html:169
#: terminal/templates/terminal/session_detail.html:81 #: terminal/templates/terminal/session_detail.html:81
#: users/templates/users/user_detail.html:124 #: users/templates/users/user_detail.html:121
#: users/templates/users/user_profile.html:130 #: users/templates/users/user_profile.html:130
msgid "Quick modify" msgid "Quick modify"
msgstr "快速修改" msgstr "快速修改"
#: assets/templates/assets/asset_detail.html:175 #: assets/templates/assets/asset_detail.html:175
#: assets/templates/assets/asset_list.html:36 perms/models.py:32 #: assets/templates/assets/asset_list.html:36 perms/models.py:20
#: perms/templates/perms/asset_permission_create_update.html:47 #: perms/templates/perms/asset_permission_create_update.html:47
#: terminal/templates/terminal/terminal_list.html:34 #: terminal/templates/terminal/terminal_list.html:34
#: users/templates/users/_select_user_modal.html:18 #: users/templates/users/_select_user_modal.html:18
#: users/templates/users/user_detail.html:130 #: users/templates/users/user_detail.html:127
#: users/templates/users/user_list.html:27 #: users/templates/users/user_list.html:27
#: users/templates/users/user_profile.html:63 #: users/templates/users/user_profile.html:63
msgid "Active" msgid "Active"
...@@ -794,43 +806,44 @@ msgid "Refresh hardware" ...@@ -794,43 +806,44 @@ msgid "Refresh hardware"
msgstr "更新硬件信息" msgstr "更新硬件信息"
#: assets/templates/assets/asset_detail.html:194 #: assets/templates/assets/asset_detail.html:194
#: assets/templates/assets/system_user_asset.html:89
msgid "Refresh" msgid "Refresh"
msgstr "刷新" msgstr "刷新"
#: assets/templates/assets/asset_detail.html:213 #: assets/templates/assets/asset_detail.html:199
msgid "Test is alive"
msgstr ""
#: assets/templates/assets/asset_detail.html:221
msgid "Join asset groups" msgid "Join asset groups"
msgstr "添加到资产组" msgstr "添加到资产组"
#: assets/templates/assets/asset_detail.html:311 #: assets/templates/assets/asset_detail.html:318
#: users/templates/users/user_detail.html:275 #: users/templates/users/user_detail.html:272
#: users/templates/users/user_detail.html:288
msgid "Update successfully!" msgid "Update successfully!"
msgstr "更新成功" msgstr "更新成功"
#: assets/templates/assets/asset_detail.html:376
msgid "Pong"
msgstr ""
#: assets/templates/assets/asset_group_detail.html:16 #: assets/templates/assets/asset_group_detail.html:16
msgid "Group assets" msgid "Group assets"
msgstr "组下资产" msgstr "组下资产"
#: assets/templates/assets/asset_group_detail.html:49
#: assets/templates/assets/user_asset_list.html:40
#: terminal/templates/terminal/terminal_list.html:35
msgid "Alive"
msgstr "在线"
#: assets/templates/assets/asset_group_detail.html:62 #: assets/templates/assets/asset_group_detail.html:62
msgid "Add assets to this group" msgid "Add assets to this group"
msgstr "添加资产到该组" msgstr "添加资产到该组"
#: assets/templates/assets/asset_group_detail.html:79 #: assets/templates/assets/asset_group_detail.html:79
#: perms/templates/perms/asset_permission_asset.html:118 #: perms/templates/perms/asset_permission_asset.html:108
#: perms/templates/perms/asset_permission_user.html:118 #: perms/templates/perms/asset_permission_detail.html:153
#: perms/templates/perms/asset_permission_user.html:146 #: perms/templates/perms/asset_permission_user.html:108
#: users/templates/users/user_group_detail.html:98 #: perms/templates/perms/asset_permission_user.html:136
#: users/templates/users/user_group_detail.html:95
msgid "Add" msgid "Add"
msgstr "添加" msgstr "添加"
#: assets/templates/assets/asset_group_detail.html:191 #: assets/templates/assets/asset_group_detail.html:173
msgid "Remove" msgid "Remove"
msgstr "移除" msgstr "移除"
...@@ -839,58 +852,41 @@ msgstr "移除" ...@@ -839,58 +852,41 @@ msgstr "移除"
msgid "Create asset group" msgid "Create asset group"
msgstr "创建资产组" msgstr "创建资产组"
#: assets/templates/assets/asset_group_list.html:27 #: assets/templates/assets/asset_group_list.html:82
#: assets/templates/assets/asset_list.html:47
#: assets/templates/assets/cluster_list.html:33
#: assets/templates/assets/system_user_list.html:31
#: users/templates/users/user_group_list.html:22
#: users/templates/users/user_list.html:37
msgid "Delete selected"
msgstr "批量删除"
#: assets/templates/assets/asset_group_list.html:28
#: assets/templates/assets/asset_list.html:48
#: assets/templates/assets/system_user_list.html:32
#: users/templates/users/user_list.html:38
msgid "Update selected"
msgstr "批量更新"
#: assets/templates/assets/asset_group_list.html:95
#: assets/templates/assets/asset_list.html:194 #: assets/templates/assets/asset_list.html:194
#: assets/templates/assets/cluster_assets.html:247 #: assets/templates/assets/cluster_list.html:83
#: assets/templates/assets/cluster_list.html:95 #: assets/templates/assets/system_user_list.html:122
#: assets/templates/assets/system_user_list.html:97
#: assets/templates/assets/user_asset_list.html:160 #: assets/templates/assets/user_asset_list.html:160
#: users/templates/users/user_detail.html:336 #: users/templates/users/user_detail.html:333
#: users/templates/users/user_detail.html:361 #: users/templates/users/user_detail.html:358
#: users/templates/users/user_group_list.html:87 #: users/templates/users/user_group_list.html:77
#: users/templates/users/user_list.html:186 #: users/templates/users/user_list.html:177
msgid "Are you sure?" msgid "Are you sure?"
msgstr "你确认吗?" msgstr "你确认吗?"
#: assets/templates/assets/asset_group_list.html:96 #: assets/templates/assets/asset_group_list.html:83
#: users/templates/users/user_group_list.html:88 #: users/templates/users/user_group_list.html:78
msgid "This will delete the selected groups !!!" msgid "This will delete the selected groups !!!"
msgstr "删除选择组" msgstr "删除选择组"
#: assets/templates/assets/asset_group_list.html:104 #: assets/templates/assets/asset_group_list.html:91
msgid "Group deleted" msgid "Group deleted"
msgstr "组已被删除" msgstr "组已被删除"
#: assets/templates/assets/asset_group_list.html:105 #: assets/templates/assets/asset_group_list.html:92
#: assets/templates/assets/asset_group_list.html:110 #: assets/templates/assets/asset_group_list.html:97
msgid "Group Delete" msgid "Group Delete"
msgstr "删除" msgstr "删除"
#: assets/templates/assets/asset_group_list.html:109 #: assets/templates/assets/asset_group_list.html:96
msgid "Group deleting failed." msgid "Group deleting failed."
msgstr "删除失败" msgstr "删除失败"
#: assets/templates/assets/asset_group_list.html:172 #: assets/templates/assets/asset_group_list.html:159
msgid "The selected asset groups has been updated successfully." msgid "The selected asset groups has been updated successfully."
msgstr "更新成功" msgstr "更新成功"
#: assets/templates/assets/asset_group_list.html:173 #: assets/templates/assets/asset_group_list.html:160
msgid "AssetGroup Updated" msgid "AssetGroup Updated"
msgstr "资产组更新" msgstr "资产组更新"
...@@ -924,6 +920,16 @@ msgstr "硬件" ...@@ -924,6 +920,16 @@ msgstr "硬件"
msgid "Connective" msgid "Connective"
msgstr "连接" msgstr "连接"
#: assets/templates/assets/asset_list.html:47
#: users/templates/users/user_list.html:37
msgid "Delete selected"
msgstr "批量删除"
#: assets/templates/assets/asset_list.html:48
#: users/templates/users/user_list.html:38
msgid "Update selected"
msgstr "批量更新"
#: assets/templates/assets/asset_list.html:49 #: assets/templates/assets/asset_list.html:49
#: users/templates/users/user_list.html:39 #: users/templates/users/user_list.html:39
msgid "Deactive selected" msgid "Deactive selected"
...@@ -935,7 +941,6 @@ msgid "Active selected" ...@@ -935,7 +941,6 @@ msgid "Active selected"
msgstr "激活所选" msgstr "激活所选"
#: assets/templates/assets/asset_list.html:195 #: assets/templates/assets/asset_list.html:195
#: assets/templates/assets/cluster_assets.html:248
#: assets/templates/assets/user_asset_list.html:161 #: assets/templates/assets/user_asset_list.html:161
msgid "This will delete the selected assets !!!" msgid "This will delete the selected assets !!!"
msgstr "删除选择资产" msgstr "删除选择资产"
...@@ -943,22 +948,18 @@ msgstr "删除选择资产" ...@@ -943,22 +948,18 @@ msgstr "删除选择资产"
# msgid "Deleted!" # msgid "Deleted!"
# msgstr "删除" # msgstr "删除"
#: assets/templates/assets/asset_list.html:203 #: assets/templates/assets/asset_list.html:203
#: assets/templates/assets/cluster_assets.html:256
#: assets/templates/assets/user_asset_list.html:169 #: assets/templates/assets/user_asset_list.html:169
msgid "Asset Deleted." msgid "Asset Deleted."
msgstr "已被删除" msgstr "已被删除"
#: assets/templates/assets/asset_list.html:204 #: assets/templates/assets/asset_list.html:204
#: assets/templates/assets/asset_list.html:209 #: assets/templates/assets/asset_list.html:209
#: assets/templates/assets/cluster_assets.html:257
#: assets/templates/assets/cluster_assets.html:262
#: assets/templates/assets/user_asset_list.html:170 #: assets/templates/assets/user_asset_list.html:170
#: assets/templates/assets/user_asset_list.html:175 #: assets/templates/assets/user_asset_list.html:175
msgid "Asset Delete" msgid "Asset Delete"
msgstr "删除" msgstr "删除"
#: assets/templates/assets/asset_list.html:208 #: assets/templates/assets/asset_list.html:208
#: assets/templates/assets/cluster_assets.html:261
#: assets/templates/assets/user_asset_list.html:174 #: assets/templates/assets/user_asset_list.html:174
msgid "Asset Deleting failed." msgid "Asset Deleting failed."
msgstr "删除失败" msgstr "删除失败"
...@@ -977,25 +978,26 @@ msgstr "位置" ...@@ -977,25 +978,26 @@ msgstr "位置"
msgid "Cluster assets" msgid "Cluster assets"
msgstr "集群中资产" msgstr "集群中资产"
#: assets/templates/assets/cluster_assets.html:70 #: assets/templates/assets/cluster_assets.html:74
#, fuzzy
#| msgid "Select assets"
msgid "Test assets alive"
msgstr "选择资产"
#: assets/templates/assets/cluster_assets.html:77
#: ops/templates/ops/task_list.html:69
msgid "Run"
msgstr ""
#: assets/templates/assets/cluster_assets.html:87
msgid "Add assets to" msgid "Add assets to"
msgstr "添加资产到" msgstr "添加资产到"
#: assets/templates/assets/cluster_assets.html:78 #: assets/templates/assets/cluster_assets.html:95
msgid "Select asset" msgid "Select asset"
msgstr "选择资产" msgstr "选择资产"
#: assets/templates/assets/cluster_assets.html:339 #: assets/templates/assets/cluster_create_update.html:41 templates/_nav.html:70
#: assets/templates/assets/user_asset_list.html:252
msgid "The selected assets has been updated successfully."
msgstr "选择资产更新成功"
#: assets/templates/assets/cluster_assets.html:340
#: assets/templates/assets/user_asset_list.html:253
msgid "Asset Updated"
msgstr "更新"
#: assets/templates/assets/cluster_create_update.html:41
#: users/templates/users/user_profile.html:20 #: users/templates/users/user_profile.html:20
msgid "Settings" msgid "Settings"
msgstr "设置" msgstr "设置"
...@@ -1004,20 +1006,20 @@ msgstr "设置" ...@@ -1004,20 +1006,20 @@ msgstr "设置"
msgid "Create Cluster" msgid "Create Cluster"
msgstr "创建Cluster" msgstr "创建Cluster"
#: assets/templates/assets/cluster_list.html:96 #: assets/templates/assets/cluster_list.html:84
msgid "This will delete the selected cluster" msgid "This will delete the selected cluster"
msgstr "删除选择Cluster" msgstr "删除选择Cluster"
#: assets/templates/assets/cluster_list.html:104 #: assets/templates/assets/cluster_list.html:92
msgid "Cluster Deleted." msgid "Cluster Deleted."
msgstr "已被删除" msgstr "已被删除"
#: assets/templates/assets/cluster_list.html:105 #: assets/templates/assets/cluster_list.html:93
#: assets/templates/assets/cluster_list.html:110 #: assets/templates/assets/cluster_list.html:98
msgid "Cluster Delete" msgid "Cluster Delete"
msgstr "删除" msgstr "删除"
#: assets/templates/assets/cluster_list.html:109 #: assets/templates/assets/cluster_list.html:97
msgid "Cluster Deleting failed." msgid "Cluster Deleting failed."
msgstr "Cluster删除失败" msgstr "Cluster删除失败"
...@@ -1032,65 +1034,93 @@ msgstr "确认删除" ...@@ -1032,65 +1034,93 @@ msgstr "确认删除"
msgid "Are you sure delete" msgid "Are you sure delete"
msgstr "您确定删除吗?" msgstr "您确定删除吗?"
#: assets/templates/assets/system_user_asset.html:38 #: assets/templates/assets/system_user_asset.html:33
msgid "Assets of " msgid "Assets of "
msgstr "资产" msgstr "资产"
#: assets/templates/assets/system_user_asset.html:60 #: assets/templates/assets/system_user_asset.html:55
#: assets/templates/assets/system_user_list.html:20
msgid "Reachable" msgid "Reachable"
msgstr "可连接" msgstr "可连接"
#: assets/templates/assets/system_user_asset.html:78 #: assets/templates/assets/system_user_asset.html:73
msgid "Push system user manually" msgid "Push system user manually"
msgstr "手动推送系统" msgstr "手动推送系统"
#: assets/templates/assets/system_user_asset.html:81 #: assets/templates/assets/system_user_asset.html:76
#: perms/templates/perms/asset_permission_detail.html:142
msgid "Push" msgid "Push"
msgstr "推送" msgstr "推送"
#: assets/templates/assets/system_user_asset.html:86 #: assets/templates/assets/system_user_asset.html:81
msgid "Refresh assets connectivity" #, fuzzy
#| msgid "Retest asset connectivity"
msgid "Test assets connective"
msgstr "重置资产连接性" msgstr "重置资产连接性"
#: assets/templates/assets/system_user_auth.html:23 #: assets/templates/assets/system_user_asset.html:150
#: assets/templates/assets/system_user_detail.html:27 msgid "Task has been send, Go to ops task list seen result"
msgstr ""
#: assets/templates/assets/system_user_asset.html:162
msgid "Task has been send, seen left assets status"
msgstr ""
#: assets/templates/assets/system_user_detail.html:22
msgid "Attached assets" msgid "Attached assets"
msgstr "关联的资产" msgstr "关联的资产"
#: assets/templates/assets/system_user_detail.html:81 #: assets/templates/assets/system_user_detail.html:76
msgid "Home" msgid "Home"
msgstr "家目录" msgstr "家目录"
#: assets/templates/assets/system_user_detail.html:87 #: assets/templates/assets/system_user_detail.html:82
msgid "Uid" msgid "Uid"
msgstr "Uid" msgstr "Uid"
#: assets/templates/assets/system_user_detail.html:147 #: assets/templates/assets/system_user_detail.html:142
msgid "Clusters" msgid "Clusters"
msgstr "集群" msgstr "集群"
#: assets/templates/assets/system_user_detail.html:155 #: assets/templates/assets/system_user_detail.html:150
msgid "Add to cluster" msgid "Add to cluster"
msgstr "添加到集群" msgstr "添加到集群"
#: assets/templates/assets/system_user_list.html:98 #: assets/templates/assets/system_user_list.html:22
#, fuzzy
#| msgid "Location"
msgid "Ratio"
msgstr "位置"
#: assets/templates/assets/system_user_list.html:123
msgid "This will delete the selected System Users !!!" msgid "This will delete the selected System Users !!!"
msgstr "删除选择系统用户" msgstr "删除选择系统用户"
#: assets/templates/assets/system_user_list.html:106 #: assets/templates/assets/system_user_list.html:131
msgid "System Users Deleted." msgid "System Users Deleted."
msgstr "已被删除" msgstr "已被删除"
#: assets/templates/assets/system_user_list.html:107 #: assets/templates/assets/system_user_list.html:132
#: assets/templates/assets/system_user_list.html:112 #: assets/templates/assets/system_user_list.html:137
msgid "System Users Delete" msgid "System Users Delete"
msgstr "删除系统用户" msgstr "删除系统用户"
#: assets/templates/assets/system_user_list.html:111 #: assets/templates/assets/system_user_list.html:136
msgid "System Users Deleting failed." msgid "System Users Deleting failed."
msgstr "系统用户删除失败" msgstr "系统用户删除失败"
#: assets/templates/assets/user_asset_list.html:39
#: users/templates/users/user_group_granted_asset.html:53
msgid "Valid"
msgstr "可用"
#: assets/templates/assets/user_asset_list.html:252
msgid "The selected assets has been updated successfully."
msgstr "选择资产更新成功"
#: assets/templates/assets/user_asset_list.html:253
msgid "Asset Updated"
msgstr "更新"
#: assets/views/admin_user.py:28 #: assets/views/admin_user.py:28
msgid "Admin user list" msgid "Admin user list"
msgstr "管理用户列表" msgstr "管理用户列表"
...@@ -1100,7 +1130,7 @@ msgstr "管理用户列表" ...@@ -1100,7 +1130,7 @@ msgstr "管理用户列表"
msgid "Create admin user <a href=\"{url}\">{name}</a> successfully." msgid "Create admin user <a href=\"{url}\">{name}</a> successfully."
msgstr "创建管理用户 <a href=\"{url}\">{name}</a> 成功" msgstr "创建管理用户 <a href=\"{url}\">{name}</a> 成功"
#: assets/views/asset.py:303 #: assets/views/asset.py:297
msgid "already exists" msgid "already exists"
msgstr "已经存在" msgstr "已经存在"
...@@ -1116,6 +1146,12 @@ msgstr "资产管理" ...@@ -1116,6 +1146,12 @@ msgstr "资产管理"
msgid "Update Cluster" msgid "Update Cluster"
msgstr "更新Cluster" msgstr "更新Cluster"
#: assets/views/cluster.py:81
#, fuzzy
#| msgid "User detail"
msgid "Cluster detail"
msgstr "用户详情"
#: assets/views/group.py:54 #: assets/views/group.py:54
msgid "Asset group list" msgid "Asset group list"
msgstr "资产组列表" msgstr "资产组列表"
...@@ -1124,27 +1160,23 @@ msgstr "资产组列表" ...@@ -1124,27 +1160,23 @@ msgstr "资产组列表"
msgid "Asset group detail" msgid "Asset group detail"
msgstr "资产组详情" msgstr "资产组详情"
#: assets/views/system_user.py:31 #: assets/views/system_user.py:30
msgid "System user list" msgid "System user list"
msgstr "系统用户列表" msgstr "系统用户列表"
#: assets/views/system_user.py:58 #: assets/views/system_user.py:57
#, python-brace-format #, python-brace-format
msgid "Create system user <a href=\"{url}\">{name}</a> successfully." msgid "Create system user <a href=\"{url}\">{name}</a> successfully."
msgstr "创建系统用户 <a href=\"{url}\">{name}</a> 成功" msgstr "创建系统用户 <a href=\"{url}\">{name}</a> 成功"
#: assets/views/system_user.py:73 #: assets/views/system_user.py:72
msgid "Update system user" msgid "Update system user"
msgstr "更新系统用户" msgstr "更新系统用户"
#: assets/views/system_user.py:93 #: assets/views/system_user.py:92
msgid "System user detail" msgid "System user detail"
msgstr "系统用户详情" msgstr "系统用户详情"
#: assets/views/system_user.py:126
msgid "Update auth info success"
msgstr "更新认证信息成功"
#: common/mixins.py:30 #: common/mixins.py:30
msgid "is discard" msgid "is discard"
msgstr "" msgstr ""
...@@ -1153,7 +1185,7 @@ msgstr "" ...@@ -1153,7 +1185,7 @@ msgstr ""
msgid "discard time" msgid "discard time"
msgstr "" msgstr ""
#: ops/models.py:95 templates/_nav.html:55 #: ops/models.py:95 templates/_nav.html:43
msgid "Tasks" msgid "Tasks"
msgstr "任务" msgstr "任务"
...@@ -1182,7 +1214,7 @@ msgstr "用户" ...@@ -1182,7 +1214,7 @@ msgstr "用户"
msgid "Become" msgid "Become"
msgstr "Become" msgstr "Become"
#: ops/models.py:102 users/templates/users/user_group_detail.html:62 #: ops/models.py:102 users/templates/users/user_group_detail.html:59
msgid "Create by" msgid "Create by"
msgstr "创建者" msgstr "创建者"
...@@ -1254,7 +1286,9 @@ msgid "Total versions" ...@@ -1254,7 +1286,9 @@ msgid "Total versions"
msgstr "版本数量" msgstr "版本数量"
#: ops/templates/ops/task_detail.html:68 #: ops/templates/ops/task_detail.html:68
msgid "Last version" #, fuzzy
#| msgid "Last version"
msgid "Latest version"
msgstr "最新版本" msgstr "最新版本"
#: ops/templates/ops/task_detail.html:72 #: ops/templates/ops/task_detail.html:72
...@@ -1290,7 +1324,7 @@ msgstr "成功资产" ...@@ -1290,7 +1324,7 @@ msgstr "成功资产"
msgid "History of " msgid "History of "
msgstr "执行历史" msgstr "执行历史"
#: ops/templates/ops/task_history.html:55 #: ops/templates/ops/task_history.html:55 terminal/models.py:98
#: terminal/templates/terminal/session_list.html:73 #: terminal/templates/terminal/session_list.html:73
msgid "Date start" msgid "Date start"
msgstr "开始日期" msgstr "开始日期"
...@@ -1312,22 +1346,65 @@ msgstr "成功" ...@@ -1312,22 +1346,65 @@ msgstr "成功"
msgid "Date" msgid "Date"
msgstr "日期" msgstr "日期"
#: perms/forms.py:21 users/forms.py:125 users/forms.py:130 #: perms/forms.py:21 users/forms.py:135 users/forms.py:140 users/forms.py:152
#: users/forms.py:181
msgid "Select users" msgid "Select users"
msgstr "选择用户" msgstr "选择用户"
#: perms/forms.py:24 perms/templates/perms/asset_permission_user.html:137 #: perms/forms.py:24 perms/templates/perms/asset_permission_user.html:127
#: users/forms.py:141
msgid "Select user groups" msgid "Select user groups"
msgstr "选择用户组" msgstr "选择用户组"
#: perms/forms.py:33 perms/templates/perms/asset_permission_detail.html:161 #: perms/forms.py:33 perms/templates/perms/asset_permission_detail.html:144
#: users/forms.py:190 users/forms.py:216 #: users/forms.py:234
msgid "Select system users" msgid "Select system users"
msgstr "选择系统用户" msgstr "选择系统用户"
#: perms/models.py:34 perms/templates/perms/asset_permission_detail.html:86 #: perms/forms.py:38
#: users/models/user.py:46 users/templates/users/user_detail.html:97 msgid "User or user group at least one required"
msgstr ""
#: perms/forms.py:39
msgid "Asset or Asset group at least one required"
msgstr ""
#: perms/models.py:15
#: perms/templates/perms/asset_permission_create_update.html:36
#: perms/templates/perms/asset_permission_list.html:20 templates/_nav.html:12
#: templates/_user_profile.html:14 terminal/backends/command/models.py:10
#: terminal/models.py:90 terminal/templates/terminal/command_list.html:31
#: terminal/templates/terminal/session_list.html:30
#: terminal/templates/terminal/session_list.html:68
#: users/templates/users/user_group_detail.html:78
msgid "User"
msgstr "用户"
#: perms/models.py:16 perms/templates/perms/asset_permission_list.html:21
#: templates/_nav.html:13 users/models/user.py:34
#: users/templates/users/_select_user_modal.html:16
#: users/templates/users/user_detail.html:178
#: users/templates/users/user_list.html:26
msgid "User group"
msgstr "用户组"
#: perms/models.py:18 perms/templates/perms/asset_permission_list.html:23
#: templates/_nav.html:23
msgid "Asset group"
msgstr "资产组"
#: perms/models.py:19 perms/templates/perms/asset_permission_detail.html:136
#: perms/templates/perms/asset_permission_list.html:24 templates/_nav.html:26
#: terminal/backends/command/models.py:12 terminal/models.py:92
#: terminal/templates/terminal/command_list.html:47
#: terminal/templates/terminal/session_list.html:46
#: terminal/templates/terminal/session_list.html:70
#: users/templates/users/user_granted_asset.html:50
#: users/templates/users/user_group_granted_asset.html:52
msgid "System user"
msgstr "系统用户"
#: perms/models.py:21 perms/templates/perms/asset_permission_detail.html:86
#: users/models/user.py:46 users/templates/users/user_detail.html:94
#: users/templates/users/user_profile.html:96 #: users/templates/users/user_profile.html:96
msgid "Date expired" msgid "Date expired"
msgstr "失效日期" msgstr "失效日期"
...@@ -1344,23 +1421,22 @@ msgstr "用户或用户组" ...@@ -1344,23 +1421,22 @@ msgstr "用户或用户组"
msgid "Assets and asset groups" msgid "Assets and asset groups"
msgstr "资产或资产组" msgstr "资产或资产组"
#: perms/templates/perms/asset_permission_asset.html:67 #: perms/templates/perms/asset_permission_asset.html:57
#: perms/templates/perms/asset_permission_list.html:16 #: perms/templates/perms/asset_permission_list.html:25
#: perms/templates/perms/asset_permission_user.html:67 #: perms/templates/perms/asset_permission_user.html:57
msgid "Is valid" msgid "Is valid"
msgstr "有效" msgstr "有效"
#: perms/templates/perms/asset_permission_asset.html:101 #: perms/templates/perms/asset_permission_asset.html:91
msgid "Add asset to this permission" msgid "Add asset to this permission"
msgstr "添加资产" msgstr "添加资产"
#: perms/templates/perms/asset_permission_asset.html:129 #: perms/templates/perms/asset_permission_asset.html:119
msgid "Add asset group to this permission" msgid "Add asset group to this permission"
msgstr "添加资产组" msgstr "添加资产组"
#: perms/templates/perms/asset_permission_asset.html:146 #: perms/templates/perms/asset_permission_asset.html:136
#: perms/templates/perms/asset_permission_detail.html:170 #: users/templates/users/user_detail.html:195
#: users/templates/users/user_detail.html:198
msgid "Join" msgid "Join"
msgstr "加入" msgstr "加入"
...@@ -1368,16 +1444,6 @@ msgstr "加入" ...@@ -1368,16 +1444,6 @@ msgstr "加入"
msgid "Create asset permission " msgid "Create asset permission "
msgstr "创建资产权限" msgstr "创建资产权限"
#: perms/templates/perms/asset_permission_create_update.html:36
#: perms/templates/perms/asset_permission_list.html:11 templates/_nav.html:12
#: templates/_user_profile.html:14 terminal/backends/command/models.py:10
#: terminal/models.py:90 terminal/templates/terminal/command_list.html:31
#: terminal/templates/terminal/session_list.html:30
#: terminal/templates/terminal/session_list.html:68
#: users/templates/users/user_group_detail.html:81
msgid "User"
msgstr "用户"
#: perms/templates/perms/asset_permission_detail.html:66 #: perms/templates/perms/asset_permission_detail.html:66
#: users/templates/users/user_group_list.html:13 #: users/templates/users/user_group_list.html:13
msgid "User count" msgid "User count"
...@@ -1399,103 +1465,64 @@ msgstr "资产组数量" ...@@ -1399,103 +1465,64 @@ msgstr "资产组数量"
msgid "System user count" msgid "System user count"
msgstr "系统用户数量" msgstr "系统用户数量"
#: perms/templates/perms/asset_permission_detail.html:130 #: perms/templates/perms/asset_permission_list.html:10
msgid "Retest asset connectivity"
msgstr "重置资产连接性"
#: perms/templates/perms/asset_permission_detail.html:139
msgid "Repush system user"
msgstr "重新推送系统"
#: perms/templates/perms/asset_permission_detail.html:153
#: perms/templates/perms/asset_permission_list.html:15 templates/_nav.html:26
#: terminal/backends/command/models.py:12
#: terminal/templates/terminal/command_list.html:47
#: terminal/templates/terminal/session_list.html:46
#: terminal/templates/terminal/session_list.html:70
#: users/templates/users/user_asset_permission.html:57
#: users/templates/users/user_granted_asset.html:55
#: users/templates/users/user_group_asset_permission.html:57
#: users/templates/users/user_group_granted_asset.html:55
msgid "System user"
msgstr "系统用户"
#: perms/templates/perms/asset_permission_list.html:5
msgid "Create permission" msgid "Create permission"
msgstr "创建授权规则" msgstr "创建授权规则"
#: perms/templates/perms/asset_permission_list.html:12 templates/_nav.html:13 #: perms/templates/perms/asset_permission_user.html:35
#: users/models/user.py:34 users/templates/users/_select_user_modal.html:16
#: users/templates/users/user_detail.html:181
#: users/templates/users/user_list.html:26
msgid "User group"
msgstr "用户组"
#: perms/templates/perms/asset_permission_list.html:14 templates/_nav.html:23
#: users/templates/users/user_asset_permission.html:56
#: users/templates/users/user_group_asset_permission.html:56
msgid "Asset group"
msgstr "资产组"
#: perms/templates/perms/asset_permission_user.html:45
msgid "User list of " msgid "User list of "
msgstr "用户列表" msgstr "用户列表"
#: perms/templates/perms/asset_permission_user.html:66 users/models/user.py:33 #: perms/templates/perms/asset_permission_user.html:56 users/models/user.py:33
#: users/templates/users/user_detail.html:73 #: users/templates/users/user_detail.html:70
#: users/templates/users/user_profile.html:59 #: users/templates/users/user_profile.html:59
msgid "Email" msgid "Email"
msgstr "邮件" msgstr "邮件"
#: perms/templates/perms/asset_permission_user.html:101 #: perms/templates/perms/asset_permission_user.html:91
msgid "Add user to asset permission" msgid "Add user to asset permission"
msgstr "添加用户" msgstr "添加用户"
#: perms/templates/perms/asset_permission_user.html:109 #: perms/templates/perms/asset_permission_user.html:99
#: users/templates/users/login_log_list.html:27 #: users/templates/users/login_log_list.html:27
msgid "Select user" msgid "Select user"
msgstr "选择用户" msgstr "选择用户"
#: perms/templates/perms/asset_permission_user.html:129 #: perms/templates/perms/asset_permission_user.html:119
msgid "Add user group to asset permission" msgid "Add user group to asset permission"
msgstr "添加用户组" msgstr "添加用户组"
#: perms/views.py:33 perms/views.py:76 perms/views.py:112 perms/views.py:140 #: perms/views.py:28 perms/views.py:80 perms/views.py:95 perms/views.py:109
#: perms/views.py:184 perms/views.py:226 templates/_nav.html:30 #: perms/views.py:146 perms/views.py:176 templates/_nav.html:30
msgid "Perms" msgid "Perms"
msgstr "权限管理" msgstr "权限管理"
#: perms/views.py:34 #: perms/views.py:29
msgid "Asset permission list" msgid "Asset permission list"
msgstr "资产授权列表" msgstr "资产授权列表"
#: perms/views.py:77 #: perms/views.py:64
msgid "Create asset permission"
msgstr "创建权限规则"
#: perms/views.py:86
#, python-brace-format #, python-brace-format
msgid "Create asset permission <a href=\"{url}\"> {name} </a> successfully." msgid "Create asset permission <a href=\"{url}\"> {name} </a> successfully."
msgstr "创建授权 <a href=\"{url}\"> {name} </a> 成功" msgstr "创建授权 <a href=\"{url}\"> {name} </a> 成功"
#: perms/views.py:106 #: perms/views.py:81
#, python-brace-format msgid "Create asset permission"
msgid "Update asset permission <a href=\"{url}\"> {name} </a> successfully." msgstr "创建权限规则"
msgstr "更新授权 <a href=\"{url}\"> {name} </a> 成功"
#: perms/views.py:113 #: perms/views.py:96
msgid "Update asset permission" msgid "Update asset permission"
msgstr "更新资产授权" msgstr "更新资产授权"
#: perms/views.py:141 #: perms/views.py:110
msgid "Asset permission detail" msgid "Asset permission detail"
msgstr "资产授权详情" msgstr "资产授权详情"
#: perms/views.py:185 #: perms/views.py:147
msgid "Asset permission user list" msgid "Asset permission user list"
msgstr "资产授权包含用户" msgstr "资产授权包含用户"
#: perms/views.py:227 #: perms/views.py:177
msgid "Asset permission asset list" msgid "Asset permission asset list"
msgstr "资产组授权包含资产" msgstr "资产组授权包含资产"
...@@ -1564,11 +1591,10 @@ msgstr "" ...@@ -1564,11 +1591,10 @@ msgstr ""
msgid "Close" msgid "Close"
msgstr "关闭" msgstr "关闭"
#: templates/_nav.html:9 users/templates/users/user_group_create_update.html:28 #: templates/_nav.html:9 users/views/group.py:30 users/views/group.py:46
#: users/views/group.py:31 users/views/group.py:45 users/views/group.py:80 #: users/views/group.py:72 users/views/group.py:89 users/views/login.py:189
#: users/views/group.py:105 users/views/login.py:189 users/views/login.py:256 #: users/views/login.py:256 users/views/user.py:55 users/views/user.py:70
#: users/views/user.py:56 users/views/user.py:71 users/views/user.py:107 #: users/views/user.py:95 users/views/user.py:151
#: users/views/user.py:159
msgid "Users" msgid "Users"
msgstr "用户管理" msgstr "用户管理"
...@@ -1576,16 +1602,15 @@ msgstr "用户管理" ...@@ -1576,16 +1602,15 @@ msgstr "用户管理"
msgid "Login logs" msgid "Login logs"
msgstr "登录日志" msgstr "登录日志"
#: templates/_nav.html:33 users/templates/users/user_asset_permission.html:21 #: templates/_nav.html:33
#: users/templates/users/user_detail.html:22
#: users/templates/users/user_granted_asset.html:21
#: users/templates/users/user_group_asset_permission.html:21
#: users/templates/users/user_group_detail.html:25
#: users/templates/users/user_group_granted_asset.html:21
msgid "Asset permission" msgid "Asset permission"
msgstr "资产授权" msgstr "资产授权"
#: templates/_nav.html:40 templates/_nav.html:43 templates/_nav_user.html:14 #: templates/_nav.html:40
msgid "Job Center"
msgstr "作业中心"
#: templates/_nav.html:49 templates/_nav.html:52 templates/_nav_user.html:14
#: terminal/templates/terminal/session_list.html:71 #: terminal/templates/terminal/session_list.html:71
#: terminal/views/command.py:65 terminal/views/session.py:97 #: terminal/views/command.py:65 terminal/views/session.py:97
#: terminal/views/session.py:114 terminal/views/session.py:136 #: terminal/views/session.py:114 terminal/views/session.py:136
...@@ -1594,23 +1619,19 @@ msgstr "资产授权" ...@@ -1594,23 +1619,19 @@ msgstr "资产授权"
msgid "Terminal" msgid "Terminal"
msgstr "终端" msgstr "终端"
#: templates/_nav.html:44 #: templates/_nav.html:53
msgid "Session online" msgid "Session online"
msgstr "在线会话" msgstr "在线会话"
#: templates/_nav.html:45 #: templates/_nav.html:54
msgid "Session offline" msgid "Session offline"
msgstr "离线会话" msgstr "离线会话"
#: templates/_nav.html:46 terminal/models.py:96 #: templates/_nav.html:55 terminal/models.py:96
#: terminal/templates/terminal/session_list.html:72 #: terminal/templates/terminal/session_list.html:72
msgid "Command" msgid "Command"
msgstr "命令" msgstr "命令"
#: templates/_nav.html:52
msgid "Job Center"
msgstr "作业中心"
#: templates/_nav.html:75 #: templates/_nav.html:75
msgid "Visit us" msgid "Visit us"
msgstr "访问官网" msgstr "访问官网"
...@@ -1705,14 +1726,16 @@ msgstr "线程" ...@@ -1705,14 +1726,16 @@ msgstr "线程"
msgid "Boot Time" msgid "Boot Time"
msgstr "运行时间" msgstr "运行时间"
#: terminal/models.py:92
msgid "System User"
msgstr "系统用户"
#: terminal/models.py:95 terminal/templates/terminal/session_list.html:95 #: terminal/models.py:95 terminal/templates/terminal/session_list.html:95
msgid "Replay" msgid "Replay"
msgstr "回放" msgstr "回放"
#: terminal/models.py:99
#, fuzzy
#| msgid "Date joined"
msgid "Date end"
msgstr "创建日期"
#: terminal/models.py:116 #: terminal/models.py:116
msgid "Args" msgid "Args"
msgstr "参数" msgstr "参数"
...@@ -1903,46 +1926,38 @@ msgstr "" ...@@ -1903,46 +1926,38 @@ msgstr ""
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "" msgstr ""
#: users/forms.py:36 users/templates/users/user_detail.html:189 #: users/forms.py:42 users/templates/users/user_detail.html:186
msgid "Join user groups" msgid "Join user groups"
msgstr "添加到用户组" msgstr "添加到用户组"
#: users/forms.py:69 #: users/forms.py:83
msgid "Old password error" msgid "Old password error"
msgstr "原来密码错误" msgstr "原来密码错误"
#: users/forms.py:77 #: users/forms.py:91
msgid "Password does not match" msgid "Password does not match"
msgstr "密码不一致" msgstr "密码不一致"
#: users/forms.py:89 #: users/forms.py:103
msgid "ssh public key" msgid "ssh public key"
msgstr "ssh公钥" msgstr "ssh公钥"
#: users/forms.py:90 #: users/forms.py:104
msgid "ssh-rsa AAAA..." msgid "ssh-rsa AAAA..."
msgstr "" msgstr ""
#: users/forms.py:91 #: users/forms.py:105
msgid "Paste your id_rsa.pub here." msgid "Paste your id_rsa.pub here."
msgstr "复制你的公钥到这里" msgstr "复制你的公钥到这里"
#: users/forms.py:103 #: users/forms.py:117
msgid "Public key should not be the same as your old one." msgid "Public key should not be the same as your old one."
msgstr "不能和原来的密钥相同" msgstr "不能和原来的密钥相同"
#: users/forms.py:107 users/serializers.py:40 #: users/forms.py:121 users/serializers.py:40
msgid "Not a valid ssh public key" msgid "Not a valid ssh public key"
msgstr "ssh密钥不合法" msgstr "ssh密钥不合法"
#: users/forms.py:119 users/models/user.py:35
#: users/templates/users/_select_user_modal.html:15
#: users/templates/users/user_detail.html:89
#: users/templates/users/user_list.html:25
#: users/templates/users/user_profile.html:55
msgid "Role"
msgstr "角色"
#: users/models/authentication.py:35 #: users/models/authentication.py:35
msgid "Private Token" msgid "Private Token"
msgstr "ssh密钥" msgstr "ssh密钥"
...@@ -1967,17 +1982,22 @@ msgstr "Agent" ...@@ -1967,17 +1982,22 @@ msgstr "Agent"
msgid "Date login" msgid "Date login"
msgstr "登录日期" msgstr "登录日期"
#: users/models/user.py:35 users/templates/users/_select_user_modal.html:15
#: users/templates/users/user_detail.html:86
#: users/templates/users/user_list.html:25
#: users/templates/users/user_profile.html:55
msgid "Role"
msgstr "角色"
#: users/models/user.py:36 #: users/models/user.py:36
msgid "Avatar" msgid "Avatar"
msgstr "头像" msgstr "头像"
#: users/models/user.py:37 users/templates/users/user_detail.html:84 #: users/models/user.py:37 users/templates/users/user_detail.html:81
msgid "Wechat" msgid "Wechat"
msgstr "微信" msgstr "微信"
#: users/models/user.py:39 users/templates/users/_user.html:36 #: users/models/user.py:39 users/templates/users/user_detail.html:90
#: users/templates/users/user_detail.html:93
#: users/templates/users/user_detail.html:144
msgid "Enable OTP" msgid "Enable OTP"
msgstr "二次验证" msgstr "二次验证"
...@@ -2086,8 +2106,7 @@ msgid "City" ...@@ -2086,8 +2106,7 @@ msgid "City"
msgstr "城市" msgstr "城市"
#: users/templates/users/reset_password.html:45 #: users/templates/users/reset_password.html:45
#: users/templates/users/user_detail.html:159 #: users/templates/users/user_detail.html:324
#: users/templates/users/user_detail.html:327
#: users/templates/users/user_profile.html:136 users/utils.py:68 #: users/templates/users/user_profile.html:136 users/utils.py:68
msgid "Reset password" msgid "Reset password"
msgstr "重置密码" msgstr "重置密码"
...@@ -2100,154 +2119,141 @@ msgstr "再次输入密码" ...@@ -2100,154 +2119,141 @@ msgstr "再次输入密码"
msgid "Setting" msgid "Setting"
msgstr "设置" msgstr "设置"
#: users/templates/users/user_asset_permission.html:18 #: users/templates/users/user_create.html:4
#: users/templates/users/user_list.html:16 users/views/user.py:70
msgid "Create user"
msgstr "创建用户"
#: users/templates/users/user_create.html:13
msgid "Reset link will be generated and sent to the user. "
msgstr "生成重置密码连接,通过邮件发送给用户"
#: users/templates/users/user_detail.html:19 #: users/templates/users/user_detail.html:19
#: users/templates/users/user_granted_asset.html:18 #: users/templates/users/user_granted_asset.html:18
#: users/templates/users/user_group_asset_permission.html:18
#: users/templates/users/user_group_granted_asset.html:18 #: users/templates/users/user_group_granted_asset.html:18
#: users/views/user.py:160 #: users/views/user.py:152
msgid "User detail" msgid "User detail"
msgstr "用户详情" msgstr "用户详情"
#: users/templates/users/user_asset_permission.html:24 #: users/templates/users/user_detail.html:22
#: users/templates/users/user_detail.html:25 #: users/templates/users/user_granted_asset.html:21
#: users/templates/users/user_granted_asset.html:24 #: users/templates/users/user_group_detail.html:25
#: users/templates/users/user_group_asset_permission.html:24 #: users/templates/users/user_group_granted_asset.html:21
#: users/templates/users/user_group_detail.html:28
#: users/templates/users/user_group_granted_asset.html:24
msgid "Asset granted" msgid "Asset granted"
msgstr "授权的资产" msgstr "授权的资产"
#: users/templates/users/user_asset_permission.html:32 #: users/templates/users/user_detail.html:106
#: users/templates/users/user_group_asset_permission.html:32
msgid "Asset permission of "
msgstr "授权规则"
#: users/templates/users/user_asset_permission.html:71
msgid "Quick create permission for user"
msgstr "创建权限"
#: users/templates/users/user_asset_permission.html:177
#: users/templates/users/user_group_asset_permission.html:174
msgid "Revoke Successfully!"
msgstr "回收成功"
#: users/templates/users/user_create.html:4
#: users/templates/users/user_list.html:16 users/views/user.py:71
msgid "Create user"
msgstr "创建用户"
#: users/templates/users/user_create.html:13
msgid "Reset link will be generated and sent to the user. "
msgstr "生成重置密码连接,通过邮件发送给用户"
#: users/templates/users/user_detail.html:109
#: users/templates/users/user_profile.html:92 #: users/templates/users/user_profile.html:92
msgid "Last login" msgid "Last login"
msgstr "最后登录" msgstr "最后登录"
#: users/templates/users/user_detail.html:156
#, fuzzy
#| msgid "Send reset password message"
msgid "Send reset password mail"
msgstr "发送重置密码邮件"
#: users/templates/users/user_detail.html:159
#: users/templates/users/user_detail.html:167 #: users/templates/users/user_detail.html:167
msgid "Reset ssh key" msgid "Send"
msgstr ""
#: users/templates/users/user_detail.html:164
#, fuzzy
#| msgid "Reset ssh key"
msgid "Send reset ssh key mail"
msgstr "重置密钥" msgstr "重置密钥"
#: users/templates/users/user_detail.html:326 #: users/templates/users/user_detail.html:323
msgid "An e-mail has been sent to the user\\'s mailbox." msgid "An e-mail has been sent to the user\\'s mailbox."
msgstr "已发送邮件到用户邮箱" msgstr "已发送邮件到用户邮箱"
#: users/templates/users/user_detail.html:337 #: users/templates/users/user_detail.html:334
msgid "" msgid ""
"This will reset the user's password. A password-reset email will be sent to " "This will reset the user's password. A password-reset email will be sent to "
"the user\\'s mailbox." "the user\\'s mailbox."
msgstr "" msgstr ""
#: users/templates/users/user_detail.html:351 #: users/templates/users/user_detail.html:348
msgid "" msgid ""
"The reset-ssh-public-key E-mail has been sent successfully. Please inform " "The reset-ssh-public-key E-mail has been sent successfully. Please inform "
"the user to update his new ssh public key." "the user to update his new ssh public key."
msgstr "" msgstr ""
#: users/templates/users/user_detail.html:352 #: users/templates/users/user_detail.html:349
#: users/templates/users/user_profile.html:144 #: users/templates/users/user_profile.html:144
msgid "Reset SSH public key" msgid "Reset SSH public key"
msgstr "重置SSH密钥" msgstr "重置SSH密钥"
#: users/templates/users/user_detail.html:362 #: users/templates/users/user_detail.html:359
msgid "This will reset the user\\" msgid "This will reset the user\\"
msgstr "重置" msgstr "重置"
#: users/templates/users/user_detail.html:379 #: users/templates/users/user_detail.html:376
#: users/templates/users/user_profile.html:170 #: users/templates/users/user_profile.html:170
msgid "Successfully updated the SSH public key." msgid "Successfully updated the SSH public key."
msgstr "" msgstr ""
#: users/templates/users/user_detail.html:380 #: users/templates/users/user_detail.html:377
#: users/templates/users/user_detail.html:384 #: users/templates/users/user_detail.html:381
#: users/templates/users/user_profile.html:171 #: users/templates/users/user_profile.html:171
#: users/templates/users/user_profile.html:176 #: users/templates/users/user_profile.html:176
msgid "User SSH Public Key Update" msgid "User SSH Public Key Update"
msgstr "ssh密钥" msgstr "ssh密钥"
#: users/templates/users/user_granted_asset.html:32 #: users/templates/users/user_granted_asset.html:29
#: users/templates/users/user_group_granted_asset.html:32 #: users/templates/users/user_group_granted_asset.html:29
msgid "Assets granted of " msgid "Assets granted of "
msgstr "授权资产" msgstr "授权资产"
#: users/templates/users/user_granted_asset.html:68 #: users/templates/users/user_granted_asset.html:62
#: users/templates/users/user_group_granted_asset.html:68 #: users/templates/users/user_group_granted_asset.html:65
msgid "Asset groups granted of " msgid "Asset groups granted of "
msgstr "授权资产组" msgstr "授权资产组"
#: users/templates/users/user_group_asset_permission.html:71 #: users/templates/users/user_group_create_update.html:45
msgid "Quick create permission for user group"
msgstr "快速授权"
#: users/templates/users/user_group_create_update.html:30
msgid "Select User"
msgstr "选择用户"
#: users/templates/users/user_group_create_update.html:44
msgid "Cancel" msgid "Cancel"
msgstr "取消" msgstr "取消"
#: users/templates/users/user_group_detail.html:22 users/views/group.py:106 #: users/templates/users/user_group_detail.html:22 users/views/group.py:90
msgid "User group detail" msgid "User group detail"
msgstr "资产组详情" msgstr "资产组详情"
#: users/templates/users/user_group_detail.html:89 #: users/templates/users/user_group_detail.html:86
msgid "Add user" msgid "Add user"
msgstr "添加用户" msgstr "添加用户"
#: users/templates/users/user_group_list.html:5 users/views/group.py:45 #: users/templates/users/user_group_list.html:5 users/views/group.py:47
msgid "Create user group" msgid "Create user group"
msgstr "创建用户组" msgstr "创建用户组"
#: users/templates/users/user_group_list.html:96 #: users/templates/users/user_group_list.html:86
msgid "UserGroups Deleted." msgid "UserGroups Deleted."
msgstr "用户组删除" msgstr "用户组删除"
#: users/templates/users/user_group_list.html:97 #: users/templates/users/user_group_list.html:87
#: users/templates/users/user_group_list.html:102 #: users/templates/users/user_group_list.html:92
msgid "UserGroups Delete" msgid "UserGroups Delete"
msgstr "用户组删除" msgstr "用户组删除"
#: users/templates/users/user_group_list.html:101 #: users/templates/users/user_group_list.html:91
msgid "UserGroup Deleting failed." msgid "UserGroup Deleting failed."
msgstr "用户组删除失败" msgstr "用户组删除失败"
#: users/templates/users/user_list.html:187 #: users/templates/users/user_list.html:178
msgid "This will delete the selected users !!!" msgid "This will delete the selected users !!!"
msgstr "" msgstr ""
#: users/templates/users/user_list.html:195 #: users/templates/users/user_list.html:186
msgid "User Deleted." msgid "User Deleted."
msgstr "已被删除" msgstr "已被删除"
#: users/templates/users/user_list.html:196 #: users/templates/users/user_list.html:187
#: users/templates/users/user_list.html:201 #: users/templates/users/user_list.html:192
msgid "User Delete" msgid "User Delete"
msgstr "删除" msgstr "删除"
#: users/templates/users/user_list.html:200 #: users/templates/users/user_list.html:191
msgid "User Deleting failed." msgid "User Deleting failed."
msgstr "用户删除失败" msgstr "用户删除失败"
...@@ -2255,8 +2261,8 @@ msgstr "用户删除失败" ...@@ -2255,8 +2261,8 @@ msgstr "用户删除失败"
msgid "OTP" msgid "OTP"
msgstr "" msgstr ""
#: users/templates/users/user_profile.html:100 users/views/user.py:200 #: users/templates/users/user_profile.html:100 users/views/user.py:181
#: users/views/user.py:251 #: users/views/user.py:233
msgid "User groups" msgid "User groups"
msgstr "用户组" msgstr "用户组"
...@@ -2280,7 +2286,7 @@ msgstr "指纹" ...@@ -2280,7 +2286,7 @@ msgstr "指纹"
msgid "Update public key" msgid "Update public key"
msgstr "更新密钥" msgstr "更新密钥"
#: users/templates/users/user_update.html:3 users/views/user.py:107 #: users/templates/users/user_update.html:4 users/views/user.py:95
msgid "Update user" msgid "Update user"
msgstr "编辑用户" msgstr "编辑用户"
...@@ -2418,7 +2424,7 @@ msgstr "密码或秘钥不合法" ...@@ -2418,7 +2424,7 @@ msgstr "密码或秘钥不合法"
msgid "User group list" msgid "User group list"
msgstr "用户组列表" msgstr "用户组列表"
#: users/views/group.py:81 #: users/views/group.py:73
msgid "Update user group" msgid "Update user group"
msgstr "编辑用户组" msgstr "编辑用户组"
...@@ -2467,16 +2473,51 @@ msgstr "首次登陆" ...@@ -2467,16 +2473,51 @@ msgstr "首次登陆"
msgid "Login log list" msgid "Login log list"
msgstr "登录日志" msgstr "登录日志"
#: users/views/user.py:57 #: users/views/user.py:56
msgid "User list" msgid "User list"
msgstr "用户列表" msgstr "用户列表"
#: users/views/user.py:67 users/views/user.py:402 #: users/views/user.py:66 users/views/user.py:335
#, python-brace-format #, python-brace-format
msgid "Create user <a href=\"{url}\">{name}</a> successfully." msgid "Create user <a href=\"{url}\">{name}</a> successfully."
msgstr "创建用户 <a href=\"{url}\">{name}</a> 成功" msgstr "创建用户 <a href=\"{url}\">{name}</a> 成功"
#: users/views/user.py:229 #: users/views/user.py:105
#, fuzzy
#| msgid "Update auth info success"
msgid "Bulk update user success"
msgstr "更新认证信息成功"
#: users/views/user.py:210
msgid "Invalid file." msgid "Invalid file."
msgstr "文件错误" msgstr "文件错误"
#~ msgid "Start"
#~ msgstr "开始"
#~ msgid "Refresh assets connectivity"
#~ msgstr "重置资产连接性"
#~ msgid "Repush system user"
#~ msgstr "重新推送系统"
#~ msgid "Update asset permission <a href=\"{url}\"> {name} </a> successfully."
#~ msgstr "更新授权 <a href=\"{url}\"> {name} </a> 成功"
#~ msgid "System User"
#~ msgstr "系统用户"
#~ msgid "Asset permission of "
#~ msgstr "授权规则"
#~ msgid "Quick create permission for user"
#~ msgstr "创建权限"
#~ msgid "Revoke Successfully!"
#~ msgstr "回收成功"
#~ msgid "Quick create permission for user group"
#~ msgstr "快速授权"
#~ msgid "Select User"
#~ msgstr "选择用户"
...@@ -35,8 +35,13 @@ class AdHocRunHistorySet(viewsets.ModelViewSet): ...@@ -35,8 +35,13 @@ class AdHocRunHistorySet(viewsets.ModelViewSet):
def get_queryset(self): def get_queryset(self):
task_id = self.request.query_params.get('task') task_id = self.request.query_params.get('task')
adhoc_id = self.request.query_params.get('adhoc')
if task_id: if task_id:
task = get_object_or_404(Task, id=task_id) task = get_object_or_404(Task, id=task_id)
adhocs = task.adhoc.all() adhocs = task.adhoc.all()
self.queryset = self.queryset.filter(adhoc__in=adhocs) self.queryset = self.queryset.filter(adhoc__in=adhocs)
if adhoc_id:
adhoc = get_object_or_404(AdHoc, id=adhoc_id)
self.queryset = self.queryset.filter(adhoc=adhoc)
return self.queryset return self.queryset
...@@ -222,6 +222,14 @@ class AdHocRunHistory(models.Model): ...@@ -222,6 +222,14 @@ class AdHocRunHistory(models.Model):
def summary(self, item): def summary(self, item):
self._summary = json.dumps(item) self._summary = json.dumps(item)
@property
def success_hosts(self):
return self.summary.get('contacted', [])
@property
def failed_hosts(self):
return self.summary.get('dark', {})
def __str__(self): def __str__(self):
return self.short_id return self.short_id
......
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block custom_head_css_js %}
<link href="{% static "css/plugins/select2/select2.min.css" %}" rel="stylesheet">
<link href="{% static "css/plugins/sweetalert/sweetalert.css" %}" rel="stylesheet">
<script src="{% static "js/plugins/select2/select2.full.min.js" %}"></script>
<script src="{% static "js/plugins/sweetalert/sweetalert.min.js" %}"></script>
{% endblock %}
{% block content %}
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="panel-options">
<ul class="nav nav-tabs">
<li class="active">
<a href="{% url 'ops:adhoc-detail' pk=object.pk %}" class="text-center"><i class="fa fa-laptop"></i> {% trans 'Version detail' %} </a>
</li>
<li>
<a href="{% url 'ops:adhoc-history' pk=object.pk %}" class="text-center"><i class="fa fa-laptop"></i> {% trans 'Version run history' %} </a>
</li>
</ul>
</div>
<div class="tab-content">
<div class="col-sm-7" style="padding-left: 0">
<div class="ibox float-e-margins">
<div class="ibox-title">
<span class="label"><b>{{ object.task.name }}: {{ object.short_id }}</b></span>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<table class="table">
<tbody>
<tr class="no-borders-tr">
<td width="20%">{% trans 'ID' %}:</td>
<td><b>{{ object.id }}</b></td>
</tr>
<tr>
<td width="20%">{% trans 'Hosts' %}:</td>
<td><b>{{ object.hosts | length }}</b></td>
</tr>
<tr>
<td width="20%">{% trans 'Pattern' %}:</td>
<td><b>{{ object.pattern }}</b></td>
</tr>
<tr>
<td>{% trans 'Options' %}</td>
<td>
<b>
{% for k, v in object.options.items %}
{{ k }} = {{ v }} <br/>
{% endfor %}
</b>
</td>
</tr>
{% if object.run_as_admin %}
<tr>
<td>{% trans 'Run as' %}</td>
<td><b> Admin </b></td>
</tr>
{% else %}
<tr>
<td>{% trans 'Run as' %}:</td>
<td><b>{{ object.get_latest_history.date_start }}</b></td>
</tr>
{% endif %}
<tr>
<td>{% trans 'Become' %}</td>
<td><b>{{ object.become.user }}</b></td>
</tr>
<tr>
<td>{% trans 'Created by' %}</td>
<td><b>{{ object.created_by }}</b></td>
</tr>
<tr>
<td>{% trans 'Date created' %}:</td>
<td><b>{{ object.date_created }}</b></td>
</tr>
<tr>
<td>{% trans 'Run times' %}:</td>
<td><b>{{ object.history.all | length }}</b></td>
</tr>
<tr>
<td>{% trans 'Last run' %}:</td>
<td><b>{{ object.latest_history.short_id }}</b></td>
</tr>
<tr>
<td>{% trans 'Time delta' %}:</td>
<td><b>{{ object.latest_history.timedelta|floatformat}} s</b></td>
</tr>
<tr>
<td>{% trans 'Is finished' %}:</td>
<td><b>{{ object.latest_history.is_finished|yesno:"Yes,No,Unkown" }}</b></td>
</tr>
<tr>
<td>{% trans 'Is success ' %}:</td>
<td><b>{{ object.latest_history.is_success|yesno:"Yes,No,Unkown" }}</b></td>
</tr>
<tr>
<td>{% trans 'Tasks' %}:</td>
<td>
<b>
{% for task in object.tasks %}
{{ forloop.counter }}. {{ task.name }} ::: {{ task.action.module }} <br/>
{% endfor %}
</b>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="col-sm-5" style="padding-left: 0;padding-right: 0">
<div class="panel panel-danger">
<div class="panel-heading">
<i class="fa fa-info-circle"></i> {% trans 'Last run failed hosts' %}
</div>
<div class="panel-body">
<table class="table">
<tbody>
{% for host, task in object.latest_history.failed_hosts.items %}
{% if forloop.first %}
<tr class="no-borders-tr">
{% else %}
<tr>
{% endif %}
<td>{{ host }}: </td>
<td>
{% for name, result in task.items %}
<b>{{ name }}</b> => {{ result.msg }}
{% endfor %}
</td>
</tr>
{% empty %}
<tr class="no-borders-tr">
<td>{% trans 'No hosts' %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
<i class="fa fa-info-circle"></i> {% trans 'Last run success hosts' %}
</div>
<div class="panel-body">
<table class="table">
<tbody>
{% for host in object.latest_history.success_hosts %}
{% if forloop.first %}
<tr class="no-borders-tr">
{% else %}
<tr>
{% endif %}
<td>{{ host }}</td>
</tr>
{% empty %}
<tr class="no-borders-tr">
<td>{% trans 'No hosts' %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% include 'users/_user_update_pk_modal.html' %}
{% endblock %}
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block custom_head_css_js %}
<link href="{% static "css/plugins/select2/select2.min.css" %}" rel="stylesheet">
<link href="{% static "css/plugins/sweetalert/sweetalert.css" %}" rel="stylesheet">
<script src="{% static "js/plugins/select2/select2.full.min.js" %}"></script>
<script src="{% static "js/plugins/sweetalert/sweetalert.min.js" %}"></script>
{% endblock %}
{% block content %}
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="panel-options">
<ul class="nav nav-tabs">
<li>
<a href="{% url 'ops:adhoc-detail' pk=object.pk %}" class="text-center"><i class="fa fa-laptop"></i> {% trans 'Version detail' %} </a>
</li>
<li class="active">
<a href="{% url 'ops:adhoc-history' pk=object.pk %}" class="text-center"><i class="fa fa-laptop"></i> {% trans 'Version run history' %} </a>
</li>
</ul>
</div>
<div class="tab-content">
<div class="col-sm-12" style="padding-left: 0">
<div class="ibox float-e-margins">
<div class="ibox-title">
<span style="float: left">{% trans 'History of ' %} <b>{{ object.task.name }}:{{ object.short_id }}</b></span>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<table class="table table-hover " id="task-history-list-table" >
<thead>
<tr>
<th class="text-center">
<input type="checkbox" id="check_all" class="ipt_check_all" >
</th>
<th>{% trans 'Date start' %}</th>
<th>{% trans 'F/S/T' %}</th>
<th>{% trans 'Ratio' %}</th>
<th>{% trans 'Is finished' %}</th>
<th>{% trans 'Is success' %}</th>
<th>{% trans 'Time' %}</th>
<th>{% trans 'Version' %}</th>
<th>{% trans 'Action' %}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block custom_foot_js %}
<script>
function initTable() {
var options = {
ele: $('#task-history-list-table'),
buttons: [],
order: [],
select: [],
columnDefs: [
{targets: 1, createdCell: function (td, cellData, rowData) {
$(td).html(cellData);
}},
{targets: 2, createdCell: function (td, cellData) {
var total = "<span>" + cellData.total + "</span>";
var success = "<span class='text-navy'>" + cellData.success + "</span>";
var failed = "<span class='text-danger'>" + cellData.failed + "</span>";
$(td).html(failed + '/' + success + '/' + total );
}},
{targets: 3, createdCell: function (td, cellData) {
var val = 0;
var innerHtml = "";
if (cellData.total !== 0) {
val = cellData.success/cellData.total * 100;
}
if (val === 100) {
innerHtml = "<span class='text-navy'>" + val + "% </span>";
} else {
innerHtml = "<span class='text-danger'>" + val + "% </span>";
}
$(td).html('<span href="javascript:void(0);" data-toggle="tooltip" title="' + cellData + '">' + innerHtml + '</span>');
}},
{targets: 4, createdCell: function (td, cellData) {
if (!cellData) {
$(td).html('<i class="fa fa-times text-danger"></i>')
} else {
$(td).html('<i class="fa fa-check text-navy"></i>')
}
}},
{targets: 5, createdCell: function (td, cellData) {
if (!cellData) {
$(td).html('<i class="fa fa-times text-danger"></i>')
} else {
$(td).html('<i class="fa fa-check text-navy"></i>')
}
}},
{targets: 6, createdCell: function (td, cellData) {
if (cellData) {
$(td).html(cellData.toFixed(2) + ' s')
} else {
$(td).html("0" + ' s')
}
}},
{targets: 8, createdCell: function (td, cellData) {
var run_btn = '<a class="btn btn-xs btn-primary m-l-xs btn-run" href="{% url 'ops:adhoc-history-detail' pk=DEFAULT_PK %}">{% trans "Detail" %}</a>'.replace('{{ DEFAULT_PK }}', cellData);
if (cellData) {
$(td).html(run_btn);
}
}}
],
ajax_url: '{% url "api-ops:history-list" %}?adhoc={{ object.pk }}',
columns: [{data: function(){return ""}}, {data: "date_start"}, {data: "stat"}, {data: "stat"}, {data: "is_finished"},
{data: "is_success"}, {data: "timedelta"}, {data: 'adhoc_short_id'}, {data: "id"}]
};
jumpserver.initDataTable(options);
}
$(document).ready(function () {
initTable();
})
</script>
{% endblock %}
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block custom_head_css_js %}
<link href="{% static "css/plugins/select2/select2.min.css" %}" rel="stylesheet">
<link href="{% static "css/plugins/sweetalert/sweetalert.css" %}" rel="stylesheet">
<script src="{% static "js/plugins/select2/select2.full.min.js" %}"></script>
<script src="{% static "js/plugins/sweetalert/sweetalert.min.js" %}"></script>
{% endblock %}
{% block content %}
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="panel-options">
<ul class="nav nav-tabs">
<li class="active">
<a href="{% url 'ops:adhoc-history-detail' pk=object.pk %}" class="text-center"><i class="fa fa-laptop"></i> {% trans 'Run history detail' %} </a>
</li>
</ul>
</div>
<div class="tab-content">
<div class="col-sm-7" style="padding-left: 0">
<div class="ibox float-e-margins">
<div class="ibox-title">
<span class="label"><b>{% trans 'History detail of' %} {{ object.task.name }}: {{ object.adhoc.short_id }} </b></span>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<table class="table">
<tbody>
<tr class="no-borders-tr">
<td width="20%">{% trans 'ID' %}:</td>
<td><b>{{ object.id }}</b></td>
</tr>
<tr>
<td width="20%">{% trans 'Task name' %}:</td>
<td><b>{{ object.task.name }}</b></td>
</tr>
<tr>
<td>{% trans 'Version' %}:</td>
<td><b>{{ object.adhoc.short_id }}</b></td>
</tr>
<tr>
<td>{% trans 'Date start' %}:</td>
<td><b>{{ object.date_start }}</b></td>
</tr>
<tr>
<td>{% trans 'Time delta' %}:</td>
<td><b>{{ object.timedelta|floatformat}} s</b></td>
</tr>
<tr>
<td>{% trans 'Is finished' %}:</td>
<td><b>{{ object.is_finished|yesno:"Yes,No,Unkown" }}</b></td>
</tr>
<tr>
<td>{% trans 'Is success ' %}:</td>
<td><b>{{ object.is_success|yesno:"Yes,No,Unkown" }}</b></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="col-sm-5" style="padding-left: 0;padding-right: 0">
<div class="panel panel-danger">
<div class="panel-heading">
<i class="fa fa-info-circle"></i> {% trans 'Failed assets' %}
</div>
<div class="panel-body">
<table class="table">
<tbody>
{% for host, task in object.failed_hosts.items %}
{% if forloop.first %}
<tr class="no-borders-tr">
{% else %}
<tr>
{% endif %}
<td>{{ host }}: </td>
<td>
{% for name, result in task.items %}
<b>{{ name }}</b> => {{ result.msg }}
{% endfor %}
</td>
</tr>
{% empty %}
<tr class="no-borders-tr">
<td>{% trans 'No assets' %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
<i class="fa fa-info-circle"></i> {% trans 'Success assets' %}
</div>
<div class="panel-body">
<table class="table">
<tbody>
{% for host in object.success_hosts %}
{% if forloop.first %}
<tr class="no-borders-tr">
{% else %}
<tr>
{% endif %}
<td>{{ host }}</td>
</tr>
{% empty %}
<tr class="no-borders-tr">
<td>{% trans 'No assets' %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% include 'users/_user_update_pk_modal.html' %}
{% endblock %}
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
} }
}}, }},
{targets: 7, createdCell: function (td, cellData, rowData) { {targets: 7, createdCell: function (td, cellData, rowData) {
var detail_btn = '<a class="btn btn-xs btn-primary m-l-xs btn-run" data-uid="{{ DEFAULT_PK }}">{% trans "Detail" %}</a>'.replace('{{ DEFAULT_PK }}', cellData); var detail_btn = '<a class="btn btn-xs btn-primary m-l-xs btn-run" href="{% url 'ops:adhoc-detail' pk=DEFAULT_PK %}">{% trans "Detail" %}</a>'.replace('{{ DEFAULT_PK }}', cellData);
if (cellData) { if (cellData) {
$(td).html(detail_btn); $(td).html(detail_btn);
} }
......
...@@ -66,30 +66,30 @@ ...@@ -66,30 +66,30 @@
</tr> </tr>
<tr> <tr>
<td>{% trans 'Latest version' %}</td> <td>{% trans 'Latest version' %}</td>
<td><b>{{ object.get_latest_adhoc.short_id }}</b></td> <td><b><a href="{% url 'ops:adhoc-detail' pk=object.latest_adhoc.id %}">{{ object.latest_adhoc.short_id }}</a></b></td>
</tr> </tr>
<tr> <tr>
<td>{% trans 'Latest run' %}:</td> <td>{% trans 'Latest run' %}:</td>
<td><b>{{ object.get_latest_history.date_start }}</b></td> <td><b>{{ object.latest_history.date_start }}</b></td>
</tr> </tr>
<tr> <tr>
<td>{% trans 'Time delta' %}:</td> <td>{% trans 'Time delta' %}:</td>
<td><b>{{ object.get_latest_history.timedelta|floatformat}} s</b></td> <td><b>{{ object.latest_history.timedelta|floatformat}} s</b></td>
</tr> </tr>
<tr> <tr>
<td>{% trans 'Is finished' %}:</td> <td>{% trans 'Is finished' %}:</td>
<td><b>{{ object.get_latest_history.is_finished|yesno:"Yes,No,Unkown" }}</b></td> <td><b>{{ object.latest_history.is_finished|yesno:"Yes,No,Unkown" }}</b></td>
</tr> </tr>
<tr> <tr>
<td>{% trans 'Is success ' %}:</td> <td>{% trans 'Is success ' %}:</td>
<td><b>{{ object.get_latest_history.is_success|yesno:"Yes,No,Unkown" }}</b></td> <td><b>{{ object.latest_history.is_success|yesno:"Yes,No,Unkown" }}</b></td>
</tr> </tr>
<tr> <tr>
<td>{% trans 'Contents' %}:</td> <td>{% trans 'Contents' %}:</td>
<td> <td>
<b> <b>
{% for task in object.get_latest_adhoc.tasks %} {% for task in object.latest_adhoc.tasks %}
{{ task.name }} : {{ task.action.module }} <br/> {{ forloop.counter }}. {{ task.name }} : {{ task.action.module }} <br/>
{% endfor %} {% endfor %}
</b> </b>
</td> </td>
...@@ -102,23 +102,27 @@ ...@@ -102,23 +102,27 @@
<div class="col-sm-5" style="padding-left: 0;padding-right: 0"> <div class="col-sm-5" style="padding-left: 0;padding-right: 0">
<div class="panel panel-danger"> <div class="panel panel-danger">
<div class="panel-heading"> <div class="panel-heading">
<i class="fa fa-info-circle"></i> {% trans 'Failed assets' %} <i class="fa fa-info-circle"></i> {% trans 'Last run failed hosts' %}
</div> </div>
<div class="panel-body"> <div class="panel-body">
<table class="table"> <table class="table">
<tbody> <tbody>
{% for host, msg in results.failed %} {% for host, task in object.latest_history.failed_hosts.items %}
{% if forloop.first %} {% if forloop.first %}
<tr class="no-borders-tr"> <tr class="no-borders-tr">
{% else %} {% else %}
<tr> <tr>
{% endif %} {% endif %}
<td>{{ host }}: </td> <td>{{ host }}: </td>
<td>{{ msg }}</td> <td>
{% for name, result in task.items %}
<b>{{ name }}</b> => {{ result.msg }}
{% endfor %}
</td>
</tr> </tr>
{% empty %} {% empty %}
<tr class="no-borders-tr"> <tr class="no-borders-tr">
<td>{% trans 'No assets' %}</td> <td>{% trans 'No hosts' %}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
...@@ -128,12 +132,12 @@ ...@@ -128,12 +132,12 @@
<div class="panel panel-primary"> <div class="panel panel-primary">
<div class="panel-heading"> <div class="panel-heading">
<i class="fa fa-info-circle"></i> {% trans 'Success assets' %} <i class="fa fa-info-circle"></i> {% trans 'Last run success hosts' %}
</div> </div>
<div class="panel-body"> <div class="panel-body">
<table class="table"> <table class="table">
<tbody> <tbody>
{% for host in object.get_latest_history.summary.contacted %} {% for host in object.latest_history.success_hosts %}
{% if forloop.first %} {% if forloop.first %}
<tr class="no-borders-tr"> <tr class="no-borders-tr">
{% else %} {% else %}
...@@ -143,7 +147,7 @@ ...@@ -143,7 +147,7 @@
</tr> </tr>
{% empty %} {% empty %}
<tr class="no-borders-tr"> <tr class="no-borders-tr">
<td>{% trans 'No assets' %}</td> <td>{% trans 'No hosts' %}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<div class="col-sm-12" style="padding-left: 0"> <div class="col-sm-12" style="padding-left: 0">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<span style="float: left">{% trans 'History of ' %} <b>{{ object.name }}</b></span> <span style="float: left">{% trans 'History of ' %} <b>{{ object.task.name }}:{{ object.short_id }}</b></span>
<div class="ibox-tools"> <div class="ibox-tools">
<a class="collapse-link"> <a class="collapse-link">
<i class="fa fa-chevron-up"></i> <i class="fa fa-chevron-up"></i>
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
</th> </th>
<th>{% trans 'Date start' %}</th> <th>{% trans 'Date start' %}</th>
<th>{% trans 'F/S/T' %}</th> <th>{% trans 'F/S/T' %}</th>
<th>{% trans 'Ratio' %}</th>
<th>{% trans 'Is finished' %}</th> <th>{% trans 'Is finished' %}</th>
<th>{% trans 'Is success' %}</th> <th>{% trans 'Is success' %}</th>
<th>{% trans 'Time' %}</th> <th>{% trans 'Time' %}</th>
...@@ -75,57 +76,75 @@ ...@@ -75,57 +76,75 @@
{% endblock %} {% endblock %}
{% block custom_foot_js %} {% block custom_foot_js %}
<script> <script>
$(document).ready(function () { function initTable() {
var options = { var options = {
ele: $('#task-history-list-table'), ele: $('#task-history-list-table'),
buttons: [], buttons: [],
order: [], order: [],
select: [], select: [],
columnDefs: [ columnDefs: [
{targets: 1, createdCell: function (td, cellData, rowData) { {targets: 1, createdCell: function (td, cellData, rowData) {
{# var detail_btn = '<a href="' + cellData + '</a>';#} $(td).html(cellData);
$(td).html(cellData); }},
}}, {targets: 2, createdCell: function (td, cellData) {
{targets: 2, createdCell: function (td, cellData) { var total = "<span>" + cellData.total + "</span>";
var total = "<span>" + cellData.total + "</span>"; var success = "<span class='text-navy'>" + cellData.success + "</span>";
var success = "<span class='text-navy'>" + cellData.success + "</span>"; var failed = "<span class='text-danger'>" + cellData.failed + "</span>";
var failed = "<span class='text-danger'>" + cellData.failed + "</span>"; $(td).html(failed + '/' + success + '/' + total );
$(td).html(failed + '/' + success + '/' + total ); }},
}}, {targets: 3, createdCell: function (td, cellData) {
{targets: 3, createdCell: function (td, cellData) { var val = 0;
if (!cellData) { var innerHtml = "";
$(td).html('<i class="fa fa-times text-danger"></i>') if (cellData.total !== 0) {
} else { val = cellData.success/cellData.total * 100;
$(td).html('<i class="fa fa-check text-navy"></i>') }
}
}}, if (val === 100) {
{targets: 4, createdCell: function (td, cellData) { innerHtml = "<span class='text-navy'>" + val + "% </span>";
if (!cellData) { } else {
$(td).html('<i class="fa fa-times text-danger"></i>') innerHtml = "<span class='text-danger'>" + val + "% </span>";
} else { }
$(td).html('<i class="fa fa-check text-navy"></i>') $(td).html('<span href="javascript:void(0);" data-toggle="tooltip" title="' + cellData + '">' + innerHtml + '</span>');
} }},
}}, {targets: 4, createdCell: function (td, cellData) {
{targets: 5, createdCell: function (td, cellData) { if (!cellData) {
if (cellData) { $(td).html('<i class="fa fa-times text-danger"></i>')
$(td).html(cellData.toFixed(2) + ' s') } else {
} else { $(td).html('<i class="fa fa-check text-navy"></i>')
$(td).html("0" + ' s') }
} }},
}}, {targets: 5, createdCell: function (td, cellData) {
{targets: 7, createdCell: function (td, cellData) { if (!cellData) {
var run_btn = '<a class="btn btn-xs btn-primary m-l-xs btn-run" data-uid="{{ DEFAULT_PK }}">{% trans "Detail" %}</a>'.replace('{{ DEFAULT_PK }}', cellData); $(td).html('<i class="fa fa-times text-danger"></i>')
if (cellData) { } else {
$(td).html(run_btn); $(td).html('<i class="fa fa-check text-navy"></i>')
} }
}} }},
], {targets: 6, createdCell: function (td, cellData) {
ajax_url: '{% url "api-ops:history-list" %}?task={{ object.pk }}', if (cellData) {
columns: [{data: function(){return ""}}, {data: "date_start"}, {data: "stat"}, {data: "adhoc_short_id"}, $(td).html(cellData.toFixed(2) + ' s')
{data: "adhoc_short_id"}, {data: "timedelta"}, {data: 'adhoc_short_id'}, {data: "id"}] } else {
}; $(td).html("0" + ' s')
jumpserver.initDataTable(options); }
}) }},
</script> {targets: 8, createdCell: function (td, cellData) {
var run_btn = '<a class="btn btn-xs btn-primary m-l-xs btn-run" href="{% url 'ops:adhoc-history-detail' pk=DEFAULT_PK %}">{% trans "Detail" %}</a>'.replace('{{ DEFAULT_PK }}', cellData);
if (cellData) {
$(td).html(run_btn);
}
}}
],
ajax_url: '{% url "api-ops:history-list" %}?task={{ object.pk }}',
columns: [{data: function(){return ""}}, {data: "date_start"}, {data: "stat"}, {data: "stat"}, {data: "is_finished"},
{data: "is_success"}, {data: "timedelta"}, {data: 'adhoc_short_id'}, {data: "id"}]
};
jumpserver.initDataTable(options);
}
$(document).ready(function () {
initTable();
})
</script>
{% endblock %} {% endblock %}
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
</div> </div>
</div> </div>
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control input-sm" name="keyword" placeholder="Search" value="{{ keyword }}"> <input type="text" class="form-control input-sm" name="keyword" placeholder="{% trans "Search" %}" value="{{ keyword }}">
</div> </div>
<div class="input-group"> <div class="input-group">
<div class="input-group-btn"> <div class="input-group-btn">
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
{% for object in task_list %} {% for object in task_list %}
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center"><input type="checkbox" class="cbx-term"> </td> <td class="text-center"><input type="checkbox" class="cbx-term"> </td>
<td class="text-center"><a href="{% url 'ops:task-detail' pk=object.id %}">{{ object.name }}</a></td> <td class="text-left"><a href="{% url 'ops:task-detail' pk=object.id %}">{{ object.name }}</a></td>
<td class="text-center"> <td class="text-center">
<span class="text-danger">{{ object.history_summary.failed }}</span>/<span class="text-navy">{{ object.history_summary.success}}</span>/{{ object.history_summary.total}} <span class="text-danger">{{ object.history_summary.failed }}</span>/<span class="text-navy">{{ object.history_summary.success}}</span>/{{ object.history_summary.total}}
</td> </td>
...@@ -67,38 +67,37 @@ ...@@ -67,38 +67,37 @@
<td class="text-center">{{ object.latest_history.timedelta|floatformat }} s</td> <td class="text-center">{{ object.latest_history.timedelta|floatformat }} s</td>
<td class="text-center"> <td class="text-center">
<a href="{% url 'ops:task-run' pk=object.id %}" class="btn btn-xs btn-info">{% trans "Run" %}</a> <a href="{% url 'ops:task-run' pk=object.id %}" class="btn btn-xs btn-info">{% trans "Run" %}</a>
<a data-uid="{{ object.uuid }}" class="btn btn-xs btn-danger btn-del">{% trans "Delete" %}</a> <a data-uid="{{ object.id }}" class="btn btn-xs btn-danger btn-del">{% trans "Delete" %}</a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
{% endblock %} {% endblock %}
{# comment #}
{% block custom_foot_js %} {% block custom_foot_js %}
<script src="{% static 'js/plugins/datepicker/bootstrap-datepicker.js' %}"></script> <script src="{% static 'js/plugins/datepicker/bootstrap-datepicker.js' %}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
$('table').DataTable({ $('table').DataTable({
"searching": false, "searching": false,
"paging": false, "paging": false,
"bInfo" : false, "bInfo" : false,
"order": [] "order": []
}); });
$('.select2').select2(); $('.select2').select2();
$('#date .input-daterange').datepicker({ $('#date .input-daterange').datepicker({
dateFormat: 'mm/dd/yy', dateFormat: 'mm/dd/yy',
keyboardNavigation: false, keyboardNavigation: false,
forceParse: false, forceParse: false,
autoclose: true autoclose: true
}); });
}).on('click', '.btn-del', function () { }).on('click', '.btn-del', function () {
var $this = $(this); var $this = $(this);
var name = $(this).closest("tr").find(":nth-child(2)").children('a').html(); var name = $(this).closest("tr").find(":nth-child(2)").children('a').html();
var uid = $this.data('uid'); var uid = $this.data('uid');
var the_url = '{% url "api-ops:task-detail" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid); var the_url = '{% url "api-ops:task-detail" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid);
objectDelete($this, name, the_url); objectDelete($this, name, the_url);
}) })
</script> </script>
{% endblock %} {% endblock %}
...@@ -16,4 +16,7 @@ urlpatterns = [ ...@@ -16,4 +16,7 @@ urlpatterns = [
url(r'^task/(?P<pk>[0-9a-zA-Z\-]{36})/adhoc/$', views.TaskAdhocView.as_view(), name='task-adhoc'), url(r'^task/(?P<pk>[0-9a-zA-Z\-]{36})/adhoc/$', views.TaskAdhocView.as_view(), name='task-adhoc'),
url(r'^task/(?P<pk>[0-9a-zA-Z\-]{36})/history/$', views.TaskHistoryView.as_view(), name='task-history'), url(r'^task/(?P<pk>[0-9a-zA-Z\-]{36})/history/$', views.TaskHistoryView.as_view(), name='task-history'),
url(r'^task/(?P<pk>[0-9a-zA-Z\-]{36})/run/$', views.TaskRunView.as_view(), name='task-run'), url(r'^task/(?P<pk>[0-9a-zA-Z\-]{36})/run/$', views.TaskRunView.as_view(), name='task-run'),
] url(r'^adhoc/(?P<pk>[0-9a-zA-Z\-]{36})/$', views.AdHocDetailView.as_view(), name='adhoc-detail'),
\ No newline at end of file url(r'^adhoc/(?P<pk>[0-9a-zA-Z\-]{36})/history/$', views.AdHocHistoryView.as_view(), name='adhoc-history'),
url(r'^adhoc/history/(?P<pk>[0-9a-zA-Z\-]{36})/$', views.AdHocHistoryDetailView.as_view(), name='adhoc-history-detail'),
]
# ~*~ coding: utf-8 ~*~ # ~*~ coding: utf-8 ~*~
from __future__ import unicode_literals from __future__ import unicode_literals
import time import time
import json
from datetime import datetime from datetime import datetime
from django.utils.translation import ugettext as _
from django.conf import settings from django.conf import settings
from django.views.generic import ListView, DetailView, View from django.views.generic import ListView, DetailView, View
from django.utils import timezone from django.utils import timezone
...@@ -53,7 +53,7 @@ class TaskListView(ListView): ...@@ -53,7 +53,7 @@ class TaskListView(ListView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = { context = {
'app': 'Ops', 'app': 'Ops',
'action': 'Playbook record list', 'action': _('Task list'),
'date_from': self.date_from_s, 'date_from': self.date_from_s,
'date_to': self.date_to_s, 'date_to': self.date_to_s,
'keyword': self.keyword, 'keyword': self.keyword,
...@@ -109,3 +109,42 @@ class TaskRunView(View): ...@@ -109,3 +109,42 @@ class TaskRunView(View):
rerun_task.delay(pk) rerun_task.delay(pk)
time.sleep(0.5) time.sleep(0.5)
return redirect(reverse('ops:task-detail', kwargs={'pk': pk})) return redirect(reverse('ops:task-detail', kwargs={'pk': pk}))
class AdHocDetailView(DetailView):
model = AdHoc
template_name = 'ops/adhoc_detail.html'
def get_context_data(self, **kwargs):
context = {
'app': 'Ops',
'action': 'Task version detail',
}
kwargs.update(context)
return super().get_context_data(**kwargs)
class AdHocHistoryView(DetailView):
model = AdHoc
template_name = 'ops/adhoc_history.html'
def get_context_data(self, **kwargs):
context = {
'app': 'Ops',
'action': 'Version run history',
}
kwargs.update(context)
return super().get_context_data(**kwargs)
class AdHocHistoryDetailView(DetailView):
model = AdHocRunHistory
template_name = 'ops/adhoc_history_detail.html'
def get_context_data(self, **kwargs):
context = {
'app': 'Ops',
'action': 'Run history detail',
}
kwargs.update(context)
return super().get_context_data(**kwargs)
\ No newline at end of file
...@@ -65,5 +65,5 @@ class AssetPermission(models.Model): ...@@ -65,5 +65,5 @@ class AssetPermission(models.Model):
for system_user in self.system_users.all(): for system_user in self.system_users.all():
cluster_remain = clusters - set(system_user.cluster.all()) cluster_remain = clusters - set(system_user.cluster.all())
if cluster_remain: if cluster_remain:
errors[system_user.name] = cluster_remain errors[system_user] = cluster_remain
return errors return errors
...@@ -50,10 +50,11 @@ class MessageMixin: ...@@ -50,10 +50,11 @@ class MessageMixin:
@staticmethod @staticmethod
def get_warning_messages(errors): def get_warning_messages(errors):
message = "System user should in behind clusters, so that " \ message = "<b><i class='fa fa-warning'></i>WARNING: System user " \
"system user auto push to cluster assets <br>" "should in behind clusters, so that " \
for system_user, clusters in errors: "system user cat auto push to the cluster assets:</b> <br>"
message += "{}: {} ".format(system_user.name, ", ".join(list(clusters))) for system_user, clusters in errors.items():
message += " >>> {}: {} ".format(system_user.name, ", ".join((cluster.name for cluster in clusters)))
return message return message
def get_success_message(self, cleaned_data): def get_success_message(self, cleaned_data):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment