From f8db9f480e15ef3aa82f6126943968d7b6137d32 Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Fri, 12 Oct 2018 18:26:56 +0800 Subject: [PATCH 01/13] =?UTF-8?q?[Update]=20=E6=B7=BB=E5=8A=A0=E7=BF=BB?= =?UTF-8?q?=E8=AF=91-=E4=BA=91=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/models/node.py | 2 + apps/locale/zh/LC_MESSAGES/django.mo | Bin 50439 -> 52151 bytes apps/locale/zh/LC_MESSAGES/django.po | 317 ++++++++++++++++++++++++--- apps/templates/_nav.html | 4 + 4 files changed, 298 insertions(+), 25 deletions(-) diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index 517996086..25b02dc65 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -31,6 +31,8 @@ class Node(OrgModelMixin): return self.full_value def __eq__(self, other): + if not other: + return False return self.key == other.key def __gt__(self, other): diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 5da9e7a3cb0d2e2a193a863b403a1d56747b03b1..f7c5ab2e24ccf123b4d820cfdc7277c1c547f9e1 100644 GIT binary patch delta 17081 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\n" "Language-Team: Jumpserver team\n" @@ -44,6 +44,8 @@ msgstr "节点管理" #: assets/forms/asset.py:116 assets/models/asset.py:87 #: assets/models/cluster.py:19 assets/models/user.py:73 #: assets/templates/assets/asset_detail.html:73 templates/_nav.html:24 +#: xpack/plugins/cloud/models.py:128 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:75 #: xpack/plugins/orgs/templates/orgs/org_list.html:18 msgid "Admin user" msgstr "管理用户" @@ -73,6 +75,9 @@ msgstr "网域" #: perms/forms.py:44 perms/models.py:79 #: perms/templates/perms/asset_permission_list.html:57 #: perms/templates/perms/asset_permission_list.html:151 +#: xpack/plugins/cloud/models.py:127 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:71 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:66 msgid "Node" msgstr "节点" @@ -121,6 +126,8 @@ msgstr "端口" #: terminal/templates/terminal/command_list.html:73 #: terminal/templates/terminal/session_list.html:41 #: terminal/templates/terminal/session_list.html:72 +#: xpack/plugins/cloud/models.py:173 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:65 #: xpack/plugins/orgs/templates/orgs/org_list.html:16 msgid "Asset" msgstr "资产" @@ -156,6 +163,11 @@ msgstr "不能包含特殊字符" #: users/templates/users/user_list.html:23 #: users/templates/users/user_profile.html:51 #: users/templates/users/user_pubkey_update.html:53 +#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:123 +#: xpack/plugins/cloud/templates/cloud/account_detail.html:52 +#: xpack/plugins/cloud/templates/cloud/account_list.html:12 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:55 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:12 #: xpack/plugins/orgs/templates/orgs/org_detail.html:52 #: xpack/plugins/orgs/templates/orgs/org_list.html:12 #: xpack/templates/orgs/org_list.html:12 @@ -357,6 +369,7 @@ msgstr "标签管理" #: ops/templates/ops/adhoc_detail.html:86 orgs/models.py:15 perms/models.py:37 #: perms/models.py:84 perms/templates/perms/asset_permission_detail.html:98 #: users/models/user.py:92 users/templates/users/user_detail.html:111 +#: xpack/plugins/cloud/models.py:41 xpack/plugins/cloud/models.py:131 msgid "Created by" msgstr "创建者" @@ -370,6 +383,10 @@ msgstr "创建者" #: perms/templates/perms/asset_permission_detail.html:94 #: terminal/templates/terminal/terminal_detail.html:59 users/models/group.py:17 #: users/templates/users/user_group_detail.html:63 +#: xpack/plugins/cloud/models.py:42 xpack/plugins/cloud/models.py:132 +#: xpack/plugins/cloud/templates/cloud/account_detail.html:68 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:87 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:19 #: xpack/plugins/orgs/templates/orgs/org_detail.html:60 msgid "Date created" msgstr "创建日期" @@ -393,7 +410,12 @@ msgstr "创建日期" #: users/templates/users/user_detail.html:123 #: users/templates/users/user_group_detail.html:67 #: users/templates/users/user_group_list.html:14 -#: users/templates/users/user_profile.html:130 +#: users/templates/users/user_profile.html:130 xpack/plugins/cloud/models.py:40 +#: xpack/plugins/cloud/models.py:129 +#: xpack/plugins/cloud/templates/cloud/account_detail.html:72 +#: xpack/plugins/cloud/templates/cloud/account_list.html:15 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:79 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:20 #: xpack/plugins/orgs/templates/orgs/org_detail.html:64 #: xpack/plugins/orgs/templates/orgs/org_list.html:22 #: xpack/templates/orgs/org_list.html:14 @@ -740,6 +762,8 @@ msgstr "其它" #: users/templates/users/user_profile_update.html:63 #: users/templates/users/user_pubkey_update.html:70 #: users/templates/users/user_pubkey_update.html:76 +#: xpack/plugins/cloud/templates/cloud/account_create_update.html:33 +#: xpack/plugins/cloud/templates/cloud/sync_task_create.html:35 msgid "Reset" msgstr "重置" @@ -856,6 +880,8 @@ msgstr "测试" #: users/templates/users/user_profile.html:151 #: users/templates/users/user_profile.html:181 #: users/templates/users/user_profile.html:190 +#: xpack/plugins/cloud/templates/cloud/account_detail.html:25 +#: xpack/plugins/cloud/templates/cloud/account_list.html:38 #: xpack/plugins/orgs/templates/orgs/org_detail.html:25 #: xpack/plugins/orgs/templates/orgs/org_list.html:85 #: xpack/templates/orgs/org_list.html:43 @@ -882,6 +908,10 @@ msgstr "更新" #: users/templates/users/user_group_list.html:45 #: users/templates/users/user_list.html:81 #: users/templates/users/user_list.html:85 +#: xpack/plugins/cloud/templates/cloud/account_detail.html:29 +#: xpack/plugins/cloud/templates/cloud/account_list.html:40 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:32 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:45 #: xpack/plugins/orgs/templates/orgs/org_detail.html:29 #: xpack/plugins/orgs/templates/orgs/org_list.html:87 #: xpack/templates/orgs/org_list.html:45 @@ -912,6 +942,8 @@ msgstr "选择节点" #: users/templates/users/user_group_list.html:87 #: users/templates/users/user_list.html:201 #: users/templates/users/user_profile.html:232 +#: xpack/plugins/cloud/templates/cloud/account_create_update.html:34 +#: xpack/plugins/cloud/templates/cloud/sync_task_create.html:36 #: xpack/plugins/orgs/templates/orgs/org_create_update.html:33 #: xpack/templates/orgs/org_list.html:86 msgid "Confirm" @@ -967,6 +999,8 @@ msgstr "比例" #: terminal/templates/terminal/terminal_list.html:36 #: users/templates/users/user_group_list.html:15 #: users/templates/users/user_list.html:29 +#: xpack/plugins/cloud/templates/cloud/account_list.html:16 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:21 #: xpack/plugins/orgs/templates/orgs/org_list.html:23 #: xpack/templates/orgs/org_list.html:15 msgid "Action" @@ -1437,7 +1471,8 @@ msgstr "文件名" #: audits/models.py:22 audits/templates/audits/ftp_log_list.html:76 #: ops/templates/ops/task_list.html:39 users/models/authentication.py:66 -#: users/templates/users/user_detail.html:452 +#: users/templates/users/user_detail.html:452 xpack/plugins/cloud/api.py:55 +#: xpack/plugins/cloud/api.py:84 msgid "Success" msgstr "成功" @@ -1480,6 +1515,8 @@ msgstr "选择用户" #: templates/_base_list.html:43 templates/_header_bar.html:8 #: terminal/templates/terminal/command_list.html:60 #: terminal/templates/terminal/session_list.html:61 +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:50 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:50 msgid "Search" msgstr "搜索" @@ -1488,6 +1525,8 @@ msgstr "搜索" #: ops/templates/ops/adhoc_history_detail.html:49 #: ops/templates/ops/task_detail.html:55 #: terminal/templates/terminal/session_list.html:70 +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:62 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:62 msgid "ID" msgstr "ID" @@ -1512,12 +1551,16 @@ msgid "MFA" msgstr "MFA" #: audits/templates/audits/login_log_list.html:55 -#: users/models/authentication.py:76 +#: users/models/authentication.py:76 xpack/plugins/cloud/models.py:158 +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:67 msgid "Reason" msgstr "原因" #: audits/templates/audits/login_log_list.html:56 -#: users/models/authentication.py:77 +#: users/models/authentication.py:77 xpack/plugins/cloud/models.py:157 +#: xpack/plugins/cloud/models.py:174 +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:68 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:67 msgid "Status" msgstr "状态" @@ -1881,7 +1924,7 @@ msgid "Special char not allowed" msgstr "不能包含特殊字符" #: common/views.py:19 common/views.py:45 common/views.py:71 common/views.py:101 -#: common/views.py:129 templates/_nav.html:100 +#: common/views.py:129 templates/_nav.html:104 msgid "Settings" msgstr "系统设置" @@ -1890,7 +1933,7 @@ msgstr "系统设置" msgid "Update setting successfully, please restart program" msgstr "更新设置成功, 请手动重启程序" -#: jumpserver/views.py:178 +#: jumpserver/views.py:180 msgid "" "
Luna is a separately deployed program, you need to deploy Luna, coco, " "configure nginx for url distribution,
If you see this page, " @@ -1953,6 +1996,7 @@ msgid "Become" msgstr "Become" #: ops/models/adhoc.py:163 users/templates/users/user_group_detail.html:59 +#: xpack/plugins/cloud/templates/cloud/account_detail.html:64 #: xpack/plugins/orgs/templates/orgs/org_detail.html:56 msgid "Create by" msgstr "创建者" @@ -2124,6 +2168,7 @@ msgid "Versions" msgstr "版本" #: ops/templates/ops/task_list.html:71 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:43 msgid "Run" msgstr "执行" @@ -2400,6 +2445,14 @@ msgstr "作业中心" msgid "XPack" msgstr "" +#: templates/_nav.html:95 xpack/plugins/cloud/views.py:26 +msgid "Account list" +msgstr "账户列表" + +#: templates/_nav.html:96 xpack/plugins/cloud/views.py:85 +msgid "Sync task list" +msgstr "同步任务列表" + #: templates/_pagination.html:59 msgid "" "Displays the results of items _START_ to _END_; A total of _TOTAL_ entries" @@ -2797,23 +2850,23 @@ msgid "" "You should use your ssh client tools connect terminal: {}

{}" msgstr "你可以使用ssh客户端工具连接终端" -#: users/api/auth.py:38 users/templates/users/login.html:52 +#: users/api/auth.py:40 users/templates/users/login.html:52 msgid "Log in frequently and try again later" msgstr "登录频繁, 稍后重试" -#: users/api/auth.py:77 +#: users/api/auth.py:79 msgid "Please carry seed value and conduct MFA secondary certification" msgstr "请携带seed值, 进行MFA二次认证" -#: users/api/auth.py:190 +#: users/api/auth.py:192 msgid "Please verify the user name and password first" msgstr "请先进行用户名和密码验证" -#: users/api/auth.py:202 +#: users/api/auth.py:204 msgid "MFA certification failed" msgstr "MFA认证失败" -#: users/api/user.py:134 +#: users/api/user.py:135 msgid "Could not reset self otp, use profile reset instead" msgstr "不能再该页面重置MFA, 请去个人信息页面重置" @@ -2994,7 +3047,8 @@ msgstr "用户名/密码 校验失败" msgid "MFA authentication failed" msgstr "MFA 认证失败" -#: users/models/authentication.py:67 +#: users/models/authentication.py:67 xpack/plugins/cloud/models.py:150 +#: xpack/plugins/cloud/models.py:164 msgid "Failed" msgstr "失败" @@ -3074,6 +3128,9 @@ msgstr "安全令牌验证" #: users/templates/users/_base_otp.html:44 users/templates/users/_user.html:13 #: users/templates/users/user_profile_update.html:51 +#: xpack/plugins/cloud/models.py:124 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:59 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:13 msgid "Account" msgstr "账户" @@ -3133,7 +3190,7 @@ msgstr "上一步" #: users/templates/users/first_login.html:105 #: users/templates/users/login_otp.html:67 #: users/templates/users/user_otp_authentication.html:26 -#: users/templates/users/user_otp_enable_bind.html:23 +#: users/templates/users/user_otp_enable_bind.html:29 #: users/templates/users/user_otp_enable_install_app.html:26 #: users/templates/users/user_password_authentication.html:21 msgid "Next" @@ -3222,7 +3279,7 @@ msgstr "请打开手机Google Authenticator应用,输入6位动态码" #: users/templates/users/login_otp.html:65 #: users/templates/users/user_otp_authentication.html:23 -#: users/templates/users/user_otp_enable_bind.html:20 +#: users/templates/users/user_otp_enable_bind.html:26 msgid "Six figures" msgstr "6位数字" @@ -3496,7 +3553,7 @@ msgstr "解绑 MFA" msgid "Bind" msgstr "绑定 MFA" -#: users/templates/users/user_otp_enable_bind.html:12 +#: users/templates/users/user_otp_enable_bind.html:14 msgid "" "Use the mobile Google Authenticator application to scan the following qr " "code for a 6-bit verification code" @@ -3737,7 +3794,7 @@ msgstr "用户组授权资产" msgid "Please enable cookies and try again." msgstr "设置你的浏览器支持cookie" -#: users/views/login.py:175 users/views/user.py:524 users/views/user.py:549 +#: users/views/login.py:175 users/views/user.py:526 users/views/user.py:551 msgid "MFA code invalid, or ntp sync server time" msgstr "MFA验证码不正确,或者服务器端时间不对" @@ -3818,32 +3875,242 @@ msgstr "密钥更新" msgid "Password invalid" msgstr "用户名或密码无效" -#: users/views/user.py:579 +#: users/views/user.py:581 msgid "MFA enable success" msgstr "MFA 绑定成功" -#: users/views/user.py:580 +#: users/views/user.py:582 msgid "MFA enable success, return login page" msgstr "MFA 绑定成功,返回到登录页面" -#: users/views/user.py:582 +#: users/views/user.py:584 msgid "MFA disable success" msgstr "MFA 解绑成功" -#: users/views/user.py:583 +#: users/views/user.py:585 msgid "MFA disable success, return login page" msgstr "MFA 解绑成功,返回登录页面" +#: xpack/plugins/cloud/api.py:54 xpack/plugins/cloud/providers/provider.py:76 +#, fuzzy +#| msgid "Unavailable" +msgid "Account unavailable" +msgstr "无效" + +#: xpack/plugins/cloud/api.py:79 +#, fuzzy +#| msgid "Create sync task" +msgid "Get sync task error" +msgstr "创建同步任务" + +#: xpack/plugins/cloud/api.py:82 +msgid "New provider error" +msgstr "" + +#: xpack/plugins/cloud/forms.py:13 +msgid "Access Key ID" +msgstr "" + +#: xpack/plugins/cloud/forms.py:14 +msgid "Access Key Secret" +msgstr "" + +#: xpack/plugins/cloud/forms.py:59 +msgid "Select account" +msgstr "选择账户" + +#: xpack/plugins/cloud/forms.py:65 +msgid "Select regions" +msgstr "选择地域" + +#: xpack/plugins/cloud/forms.py:71 +msgid "Select instances" +msgstr "选择实例" + +#: xpack/plugins/cloud/forms.py:77 +msgid "Select node" +msgstr "选择节点" + +#: xpack/plugins/cloud/forms.py:83 xpack/plugins/orgs/forms.py:18 +msgid "Select admins" +msgstr "选择管理员" + +#: xpack/plugins/cloud/meta.py:9 xpack/plugins/cloud/views.py:25 +#: xpack/plugins/cloud/views.py:41 xpack/plugins/cloud/views.py:57 +#: xpack/plugins/cloud/views.py:71 xpack/plugins/cloud/views.py:84 +#: xpack/plugins/cloud/views.py:100 xpack/plugins/cloud/views.py:121 +#: xpack/plugins/cloud/views.py:136 xpack/plugins/cloud/views.py:179 +msgid "Cloud" +msgstr "云管理" + +#: xpack/plugins/cloud/models.py:25 +msgid "Aliyun" +msgstr "阿里云" + +#: xpack/plugins/cloud/models.py:26 +msgid "AWS (China)" +msgstr "AWS (中国)" + +#: xpack/plugins/cloud/models.py:27 +msgid "AWS (International)" +msgstr "AWS (国际)" + +#: xpack/plugins/cloud/models.py:30 +msgid "Available" +msgstr "有效" + +#: xpack/plugins/cloud/models.py:31 +msgid "Unavailable" +msgstr "无效" + +#: xpack/plugins/cloud/models.py:36 +#: xpack/plugins/cloud/templates/cloud/account_detail.html:56 +#: xpack/plugins/cloud/templates/cloud/account_list.html:13 +msgid "Provider" +msgstr "云服务商" + +#: xpack/plugins/cloud/models.py:37 +msgid "Access key id" +msgstr "" + +#: xpack/plugins/cloud/models.py:38 +msgid "Access key secret" +msgstr "" + +#: xpack/plugins/cloud/models.py:39 +#: xpack/plugins/cloud/templates/cloud/account_detail.html:60 +#: xpack/plugins/cloud/templates/cloud/account_list.html:14 +msgid "Validity" +msgstr "账户状态" + +#: xpack/plugins/cloud/models.py:125 +msgid "Regions" +msgstr "地域" + +#: xpack/plugins/cloud/models.py:126 +msgid "Instances" +msgstr "实例" + +#: xpack/plugins/cloud/models.py:130 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:83 +msgid "Date last sync" +msgstr "最后同步日期" + +#: xpack/plugins/cloud/models.py:151 xpack/plugins/cloud/models.py:165 +msgid "Succeed" +msgstr "成功" + +#: xpack/plugins/cloud/models.py:152 +msgid "Partial succeed" +msgstr "" + +#: xpack/plugins/cloud/models.py:155 xpack/plugins/cloud/models.py:169 +msgid "Sync task" +msgstr "同步任务" + +#: xpack/plugins/cloud/models.py:156 +msgid "Result" +msgstr "" + +#: xpack/plugins/cloud/models.py:159 xpack/plugins/cloud/models.py:175 +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:69 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:68 +msgid "Date sync" +msgstr "同步日期" + +#: xpack/plugins/cloud/models.py:166 +msgid "Exist" +msgstr "存在" + +#: xpack/plugins/cloud/models.py:170 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:25 +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:26 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:26 +#: xpack/plugins/cloud/views.py:137 +msgid "Sync task history" +msgstr "同步历史列表" + +#: xpack/plugins/cloud/models.py:171 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:67 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:63 +msgid "Instance" +msgstr "实例" + +#: xpack/plugins/cloud/models.py:172 +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:63 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:64 +msgid "Region" +msgstr "地域" + +#: xpack/plugins/cloud/templates/cloud/account_detail.html:22 +#: xpack/plugins/cloud/views.py:72 +msgid "Account detail" +msgstr "账户详情" + +#: xpack/plugins/cloud/templates/cloud/account_list.html:5 +#: xpack/plugins/cloud/views.py:42 +msgid "Create account" +msgstr "创建账户" + +#: xpack/plugins/cloud/templates/cloud/sync_task_create.html:91 +msgid "Loading..." +msgstr "" + +#: xpack/plugins/cloud/templates/cloud/sync_task_create.html:106 +#, fuzzy +#| msgid "Create node failed" +msgid "Load failed" +msgstr "创建节点失败" + +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:22 +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:23 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:23 +#: xpack/plugins/cloud/views.py:122 +msgid "Sync task detail" +msgstr "同步任务详情" + +#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:28 +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:29 +#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:29 +#: xpack/plugins/cloud/views.py:180 +msgid "Sync task instance" +msgstr "同步实例列表" + +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:63 +msgid "Total count" +msgstr "总数" + +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:64 +msgid "Succeed count" +msgstr "成功" + +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:65 +msgid "Failed count" +msgstr "失败" + +#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:66 +msgid "Exist count" +msgstr "存在" + +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:5 +#: xpack/plugins/cloud/views.py:101 +msgid "Create sync task" +msgstr "创建同步任务" + +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:80 +msgid "Sync success" +msgstr "同步成功" + +#: xpack/plugins/cloud/views.py:58 +msgid "Update account" +msgstr "更新账户" + #: xpack/plugins/orgs/forms.py:14 #: xpack/plugins/orgs/templates/orgs/org_detail.html:76 #: xpack/plugins/orgs/templates/orgs/org_list.html:13 msgid "Admin" msgstr "管理员" -#: xpack/plugins/orgs/forms.py:18 -msgid "Select admins" -msgstr "选择管理员" - #: xpack/plugins/orgs/meta.py:8 msgid "Organizations" msgstr "组织管理" diff --git a/apps/templates/_nav.html b/apps/templates/_nav.html index b85e9aebe..be57b7dd7 100644 --- a/apps/templates/_nav.html +++ b/apps/templates/_nav.html @@ -91,6 +91,10 @@ {% for plugin in XPACK_PLUGINS %}
  • {% trans plugin.verbose_name %}
  • {% endfor %} + +
  • {% trans 'Account list' %}
  • +
  • {% trans 'Sync task list' %}
  • + {% endif %} From 1ec77c5bb9ab53afebffe10e758709c4c4ed9f68 Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Fri, 12 Oct 2018 20:29:04 +0800 Subject: [PATCH 02/13] =?UTF-8?q?[Update]=20=E6=B7=BB=E5=8A=A03=E7=BA=A7?= =?UTF-8?q?=E5=AF=BC=E8=88=AA=E8=8F=9C=E5=8D=95-=E4=BA=91=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/templates/_nav.html | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/templates/_nav.html b/apps/templates/_nav.html index df744c47c..876892bf1 100644 --- a/apps/templates/_nav.html +++ b/apps/templates/_nav.html @@ -95,10 +95,18 @@ {% endif %} From 29b87c40fe55d3e5f6d9eed5dfddbe70fc25eb69 Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Sun, 14 Oct 2018 00:03:04 +0800 Subject: [PATCH 03/13] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E4=BA=91?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97-=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 54655 -> 54552 bytes apps/locale/zh/LC_MESSAGES/django.po | 45 +++++++++++---------------- apps/templates/_nav.html | 2 +- 3 files changed, 19 insertions(+), 28 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 10eab3c93c999d326b714b0afebe84937b055707..5975c34a51ee6460b1bc5bb2292fcd249e5dc455 100644 GIT binary patch delta 16718 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 Ut` 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\n" "Language-Team: Jumpserver team\n" @@ -435,7 +435,7 @@ msgstr "创建日期" #: xpack/plugins/cloud/templates/cloud/account_detail.html:72 #: xpack/plugins/cloud/templates/cloud/account_list.html:15 #: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:71 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:20 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:15 #: xpack/plugins/orgs/templates/orgs/org_detail.html:64 #: xpack/plugins/orgs/templates/orgs/org_list.html:22 #: xpack/templates/orgs/org_list.html:14 @@ -578,7 +578,7 @@ msgstr "每行一个命令" #: users/templates/users/user_group_list.html:15 #: users/templates/users/user_list.html:29 #: xpack/plugins/cloud/templates/cloud/account_list.html:16 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:21 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:16 #: xpack/plugins/orgs/templates/orgs/org_list.html:23 #: xpack/templates/orgs/org_list.html:15 msgid "Action" @@ -1020,7 +1020,7 @@ msgstr "更新" #: xpack/plugins/cloud/templates/cloud/account_detail.html:29 #: xpack/plugins/cloud/templates/cloud/account_list.html:40 #: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:32 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:49 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:44 #: xpack/plugins/orgs/templates/orgs/org_detail.html:29 #: xpack/plugins/orgs/templates/orgs/org_list.html:87 #: xpack/templates/orgs/org_list.html:45 @@ -1629,8 +1629,7 @@ msgstr "文件名" #: audits/models.py:22 audits/templates/audits/ftp_log_list.html:76 #: ops/templates/ops/task_list.html:39 users/models/authentication.py:66 -#: users/templates/users/user_detail.html:452 xpack/plugins/cloud/api.py:60 -#: xpack/plugins/cloud/api.py:89 +#: users/templates/users/user_detail.html:452 xpack/plugins/cloud/api.py:61 msgid "Success" msgstr "成功" @@ -2076,7 +2075,7 @@ msgid "Special char not allowed" msgstr "不能包含特殊字符" #: common/views.py:19 common/views.py:45 common/views.py:71 common/views.py:101 -#: common/views.py:129 templates/_nav.html:108 +#: common/views.py:129 templates/_nav.html:116 msgid "Settings" msgstr "系统设置" @@ -2320,7 +2319,7 @@ msgid "Versions" msgstr "版本" #: ops/templates/ops/task_list.html:71 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:47 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:42 msgid "Run" msgstr "执行" @@ -2333,7 +2332,8 @@ msgstr "任务开始: " msgid "Ops" msgstr "作业中心" -#: ops/views.py:37 templates/_nav.html:67 +#: ops/views.py:37 templates/_nav.html:67 templates/_nav.html:103 +#: xpack/plugins/cloud/views.py:85 msgid "Task list" msgstr "任务列表" @@ -2605,14 +2605,10 @@ msgstr "作业中心" msgid "XPack" msgstr "" -#: templates/_nav.html:100 xpack/plugins/cloud/views.py:26 +#: templates/_nav.html:102 xpack/plugins/cloud/views.py:26 msgid "Account list" msgstr "账户列表" -#: templates/_nav.html:101 xpack/plugins/cloud/views.py:85 -msgid "Sync task list" -msgstr "同步任务列表" - #: templates/_pagination.html:59 msgid "" "Displays the results of items _START_ to _END_; A total of _TOTAL_ entries" @@ -4042,18 +4038,10 @@ msgstr "MFA 解绑成功" msgid "MFA disable success, return login page" msgstr "MFA 解绑成功,返回登录页面" -#: xpack/plugins/cloud/api.py:59 xpack/plugins/cloud/providers/provider.py:75 +#: xpack/plugins/cloud/api.py:60 xpack/plugins/cloud/providers/provider.py:75 msgid "Account unavailable" msgstr "账户无效" -#: xpack/plugins/cloud/api.py:84 -msgid "Get sync task error" -msgstr "获取同步任务" - -#: xpack/plugins/cloud/api.py:87 -msgid "New provider error" -msgstr "" - #: xpack/plugins/cloud/forms.py:13 msgid "Access Key ID" msgstr "" @@ -4087,8 +4075,8 @@ msgstr "选择管理员" #: xpack/plugins/cloud/views.py:71 xpack/plugins/cloud/views.py:84 #: xpack/plugins/cloud/views.py:100 xpack/plugins/cloud/views.py:121 #: xpack/plugins/cloud/views.py:136 xpack/plugins/cloud/views.py:179 -msgid "Cloud" -msgstr "云管理" +msgid "Cloud center" +msgstr "云管中心" #: xpack/plugins/cloud/models.py:25 msgid "Aliyun" @@ -4140,7 +4128,7 @@ msgstr "实例" #: xpack/plugins/cloud/models.py:130 #: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:75 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:19 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:14 msgid "Date last sync" msgstr "最后同步日期" @@ -4243,7 +4231,7 @@ msgstr "存在" msgid "Create sync task" msgstr "创建同步任务" -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:84 +#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:79 msgid "Sync success" msgstr "同步成功" @@ -4295,6 +4283,9 @@ msgstr "创建组织" msgid "Update org" msgstr "更新组织" +#~ msgid "Get sync task error" +#~ msgstr "获取同步任务" + #~ msgid "" #~ "Are you sure to remove authentication information for the system user ?" #~ msgstr "你确定清除该系统用户的认证信息吗 ?" diff --git a/apps/templates/_nav.html b/apps/templates/_nav.html index 876892bf1..2faf3de40 100644 --- a/apps/templates/_nav.html +++ b/apps/templates/_nav.html @@ -100,7 +100,7 @@ {% trans plugin.verbose_name %} {% else %} From f37582ec537f724bd2580d1adf7a7119c0ee7492 Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 15 Oct 2018 10:14:20 +0800 Subject: [PATCH 04/13] =?UTF-8?q?[Update]=20=E7=94=A8=E6=88=B7=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E5=8A=A0=E4=B8=8A=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/templates/_nav_user.html | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/templates/_nav_user.html b/apps/templates/_nav_user.html index 30e397ebd..a8f2dcca1 100644 --- a/apps/templates/_nav_user.html +++ b/apps/templates/_nav_user.html @@ -9,8 +9,13 @@ {% trans 'Profile' %} -
  • +
  • {% trans 'Web terminal' %} +
  • +
  • + + {% trans 'File manager' %} +
  • \ No newline at end of file From a70fcf057b9f8dcacf6c934088331de61ea0662e Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Mon, 15 Oct 2018 10:48:24 +0800 Subject: [PATCH 05/13] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9js=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A03=E7=BA=A7=E8=8F=9C=E5=8D=95active=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/static/js/jumpserver.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/static/js/jumpserver.js b/apps/static/js/jumpserver.js index bfd94efd4..5f2335c1d 100644 --- a/apps/static/js/jumpserver.js +++ b/apps/static/js/jumpserver.js @@ -145,7 +145,14 @@ function activeNav() { var resource = url_array[2]; if (app === ''){ $('#index').addClass('active'); - } else { + } + else if (app === 'xpack') { + var item = url_array[3]; + $("#" + app).addClass('active'); + $('#' + app + ' #' + resource).addClass('active'); + $('#' + app + ' #' + resource + ' #' + item + ' a').css('color', '#ffffff'); + } + else { $("#" + app).addClass('active'); $('#' + app + ' #' + resource).addClass('active'); } From 7e3fd73ae506886248edc49ff7e60fbaa1f55bd5 Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Mon, 15 Oct 2018 16:05:53 +0800 Subject: [PATCH 06/13] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E6=96=87?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 54552 -> 55049 bytes apps/locale/zh/LC_MESSAGES/django.po | 303 ++++++++++++++++----------- apps/templates/_nav.html | 2 +- 3 files changed, 186 insertions(+), 119 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 5975c34a51ee6460b1bc5bb2292fcd249e5dc455..13c0cabd8e151c336202c8bb019ca51fb503d8d3 100644 GIT binary patch delta 17202 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 z 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 0a62a43d4..2324f0c0d 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Jumpserver 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-13 22:36+0800\n" +"POT-Creation-Date: 2018-10-15 15:30+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -44,8 +44,8 @@ msgstr "节点管理" #: assets/forms/asset.py:116 assets/models/asset.py:87 #: assets/models/cluster.py:19 assets/models/user.py:72 #: assets/templates/assets/asset_detail.html:73 templates/_nav.html:24 -#: xpack/plugins/cloud/models.py:128 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:67 +#: xpack/plugins/cloud/models.py:133 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:67 #: xpack/plugins/orgs/templates/orgs/org_list.html:18 msgid "Admin user" msgstr "管理用户" @@ -75,9 +75,9 @@ msgstr "网域" #: perms/forms.py:44 perms/models.py:79 #: perms/templates/perms/asset_permission_list.html:57 #: perms/templates/perms/asset_permission_list.html:151 -#: xpack/plugins/cloud/models.py:127 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:63 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:66 +#: xpack/plugins/cloud/models.py:132 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:63 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:66 msgid "Node" msgstr "节点" @@ -130,8 +130,8 @@ msgstr "端口" #: terminal/templates/terminal/command_list.html:73 #: terminal/templates/terminal/session_list.html:41 #: terminal/templates/terminal/session_list.html:72 -#: xpack/plugins/cloud/models.py:191 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:65 +#: xpack/plugins/cloud/models.py:199 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:65 #: xpack/plugins/orgs/templates/orgs/org_list.html:16 msgid "Asset" msgstr "资产" @@ -170,14 +170,13 @@ msgstr "不能包含特殊字符" #: users/templates/users/user_list.html:23 #: users/templates/users/user_profile.html:51 #: users/templates/users/user_pubkey_update.html:53 -#: xpack/plugins/cloud/models.py:35 xpack/plugins/cloud/models.py:123 +#: xpack/plugins/cloud/models.py:40 xpack/plugins/cloud/models.py:128 #: xpack/plugins/cloud/templates/cloud/account_detail.html:52 #: xpack/plugins/cloud/templates/cloud/account_list.html:12 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:55 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:12 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:55 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:12 #: xpack/plugins/orgs/templates/orgs/org_detail.html:52 #: xpack/plugins/orgs/templates/orgs/org_list.html:12 -#: xpack/templates/orgs/org_list.html:12 msgid "Name" msgstr "名称" @@ -385,7 +384,7 @@ msgstr "标签管理" #: ops/templates/ops/adhoc_detail.html:86 orgs/models.py:15 perms/models.py:37 #: perms/models.py:84 perms/templates/perms/asset_permission_detail.html:98 #: users/models/user.py:92 users/templates/users/user_detail.html:111 -#: xpack/plugins/cloud/models.py:41 xpack/plugins/cloud/models.py:131 +#: xpack/plugins/cloud/models.py:46 xpack/plugins/cloud/models.py:136 msgid "Created by" msgstr "创建者" @@ -400,9 +399,9 @@ msgstr "创建者" #: perms/templates/perms/asset_permission_detail.html:94 #: terminal/templates/terminal/terminal_detail.html:59 users/models/group.py:17 #: users/templates/users/user_group_detail.html:63 -#: xpack/plugins/cloud/models.py:42 xpack/plugins/cloud/models.py:132 +#: xpack/plugins/cloud/models.py:47 xpack/plugins/cloud/models.py:137 #: xpack/plugins/cloud/templates/cloud/account_detail.html:68 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:79 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:79 #: xpack/plugins/orgs/templates/orgs/org_detail.html:60 msgid "Date created" msgstr "创建日期" @@ -430,15 +429,14 @@ msgstr "创建日期" #: users/templates/users/user_detail.html:123 #: users/templates/users/user_group_detail.html:67 #: users/templates/users/user_group_list.html:14 -#: users/templates/users/user_profile.html:130 xpack/plugins/cloud/models.py:40 -#: xpack/plugins/cloud/models.py:129 +#: users/templates/users/user_profile.html:130 xpack/plugins/cloud/models.py:45 +#: xpack/plugins/cloud/models.py:134 #: xpack/plugins/cloud/templates/cloud/account_detail.html:72 #: xpack/plugins/cloud/templates/cloud/account_list.html:15 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:71 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:15 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:71 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:16 #: xpack/plugins/orgs/templates/orgs/org_detail.html:64 #: xpack/plugins/orgs/templates/orgs/org_list.html:22 -#: xpack/templates/orgs/org_list.html:14 msgid "Comment" msgstr "备注" @@ -578,9 +576,8 @@ msgstr "每行一个命令" #: users/templates/users/user_group_list.html:15 #: users/templates/users/user_list.html:29 #: xpack/plugins/cloud/templates/cloud/account_list.html:16 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:16 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:18 #: xpack/plugins/orgs/templates/orgs/org_list.html:23 -#: xpack/templates/orgs/org_list.html:15 msgid "Action" msgstr "动作" @@ -621,7 +618,6 @@ msgstr "默认资产组" #: xpack/plugins/orgs/forms.py:26 #: xpack/plugins/orgs/templates/orgs/org_detail.html:113 #: xpack/plugins/orgs/templates/orgs/org_list.html:14 -#: xpack/templates/orgs/org_list.html:13 msgid "User" msgstr "用户" @@ -862,7 +858,7 @@ msgstr "其它" #: users/templates/users/user_pubkey_update.html:70 #: users/templates/users/user_pubkey_update.html:76 #: xpack/plugins/cloud/templates/cloud/account_create_update.html:33 -#: xpack/plugins/cloud/templates/cloud/sync_task_create.html:35 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create.html:35 msgid "Reset" msgstr "重置" @@ -990,7 +986,6 @@ msgstr "测试" #: xpack/plugins/cloud/templates/cloud/account_list.html:38 #: xpack/plugins/orgs/templates/orgs/org_detail.html:25 #: xpack/plugins/orgs/templates/orgs/org_list.html:85 -#: xpack/templates/orgs/org_list.html:43 msgid "Update" msgstr "更新" @@ -1019,11 +1014,10 @@ msgstr "更新" #: users/templates/users/user_list.html:85 #: xpack/plugins/cloud/templates/cloud/account_detail.html:29 #: xpack/plugins/cloud/templates/cloud/account_list.html:40 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:32 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:44 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:32 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:54 #: xpack/plugins/orgs/templates/orgs/org_detail.html:29 #: xpack/plugins/orgs/templates/orgs/org_list.html:87 -#: xpack/templates/orgs/org_list.html:45 msgid "Delete" msgstr "删除" @@ -1053,9 +1047,8 @@ msgstr "选择节点" #: users/templates/users/user_list.html:201 #: users/templates/users/user_profile.html:232 #: xpack/plugins/cloud/templates/cloud/account_create_update.html:34 -#: xpack/plugins/cloud/templates/cloud/sync_task_create.html:36 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create.html:36 #: xpack/plugins/orgs/templates/orgs/org_create_update.html:33 -#: xpack/templates/orgs/org_list.html:86 msgid "Confirm" msgstr "确认" @@ -1269,7 +1262,6 @@ msgstr "重命名失败,不能更改root节点的名称" #: users/templates/users/user_detail.html:470 #: users/templates/users/user_group_list.html:81 #: users/templates/users/user_list.html:195 -#: xpack/templates/orgs/org_list.html:81 msgid "Are you sure?" msgstr "你确认吗?" @@ -1672,8 +1664,8 @@ msgstr "选择用户" #: templates/_base_list.html:43 templates/_header_bar.html:8 #: terminal/templates/terminal/command_list.html:60 #: terminal/templates/terminal/session_list.html:61 -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:50 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:50 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:50 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:50 msgid "Search" msgstr "搜索" @@ -1682,8 +1674,8 @@ msgstr "搜索" #: ops/templates/ops/adhoc_history_detail.html:49 #: ops/templates/ops/task_detail.html:55 #: terminal/templates/terminal/session_list.html:70 -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:62 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:62 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:62 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:62 msgid "ID" msgstr "ID" @@ -1702,16 +1694,16 @@ msgid "MFA" msgstr "MFA" #: audits/templates/audits/login_log_list.html:55 -#: users/models/authentication.py:76 xpack/plugins/cloud/models.py:176 -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:67 +#: users/models/authentication.py:76 xpack/plugins/cloud/models.py:184 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:67 msgid "Reason" msgstr "原因" #: audits/templates/audits/login_log_list.html:56 -#: users/models/authentication.py:77 xpack/plugins/cloud/models.py:175 -#: xpack/plugins/cloud/models.py:192 -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:68 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:67 +#: users/models/authentication.py:77 xpack/plugins/cloud/models.py:183 +#: xpack/plugins/cloud/models.py:200 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:68 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:67 msgid "Status" msgstr "状态" @@ -2319,7 +2311,7 @@ msgid "Versions" msgstr "版本" #: ops/templates/ops/task_list.html:71 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:42 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:52 msgid "Run" msgstr "执行" @@ -2332,8 +2324,7 @@ msgstr "任务开始: " msgid "Ops" msgstr "作业中心" -#: ops/views.py:37 templates/_nav.html:67 templates/_nav.html:103 -#: xpack/plugins/cloud/views.py:85 +#: ops/views.py:37 templates/_nav.html:67 msgid "Task list" msgstr "任务列表" @@ -2609,6 +2600,10 @@ msgstr "" msgid "Account list" msgstr "账户列表" +#: templates/_nav.html:103 +msgid "Sync instance" +msgstr "同步实例" + #: templates/_pagination.html:59 msgid "" "Displays the results of items _START_ to _END_; A total of _TOTAL_ entries" @@ -3194,8 +3189,8 @@ msgstr "用户名/密码 校验失败" msgid "MFA authentication failed" msgstr "MFA 认证失败" -#: users/models/authentication.py:67 xpack/plugins/cloud/models.py:168 -#: xpack/plugins/cloud/models.py:182 +#: users/models/authentication.py:67 xpack/plugins/cloud/models.py:176 +#: xpack/plugins/cloud/models.py:190 msgid "Failed" msgstr "失败" @@ -3275,9 +3270,9 @@ msgstr "安全令牌验证" #: users/templates/users/_base_otp.html:44 users/templates/users/_user.html:13 #: users/templates/users/user_profile_update.html:51 -#: xpack/plugins/cloud/models.py:124 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:59 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:13 +#: xpack/plugins/cloud/models.py:129 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:59 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:13 msgid "Account" msgstr "账户" @@ -3645,28 +3640,23 @@ msgid "Add user" msgstr "添加用户" #: users/templates/users/user_group_list.html:5 users/views/group.py:45 -#: xpack/templates/orgs/org_list.html:5 msgid "Create user group" msgstr "创建用户组" #: users/templates/users/user_group_list.html:82 -#: xpack/templates/orgs/org_list.html:82 msgid "This will delete the selected groups !!!" msgstr "删除选择组" #: users/templates/users/user_group_list.html:91 -#: xpack/templates/orgs/org_list.html:90 msgid "UserGroups Deleted." msgstr "用户组删除" #: users/templates/users/user_group_list.html:92 #: users/templates/users/user_group_list.html:97 -#: xpack/templates/orgs/org_list.html:91 xpack/templates/orgs/org_list.html:96 msgid "UserGroups Delete" msgstr "用户组删除" #: users/templates/users/user_group_list.html:96 -#: xpack/templates/orgs/org_list.html:95 msgid "UserGroup Deleting failed." msgstr "用户组删除失败" @@ -4038,35 +4028,35 @@ msgstr "MFA 解绑成功" msgid "MFA disable success, return login page" msgstr "MFA 解绑成功,返回登录页面" -#: xpack/plugins/cloud/api.py:60 xpack/plugins/cloud/providers/provider.py:75 +#: xpack/plugins/cloud/api.py:60 xpack/plugins/cloud/providers/base.py:83 msgid "Account unavailable" msgstr "账户无效" -#: xpack/plugins/cloud/forms.py:13 +#: xpack/plugins/cloud/forms.py:12 msgid "Access Key ID" msgstr "" -#: xpack/plugins/cloud/forms.py:14 +#: xpack/plugins/cloud/forms.py:13 msgid "Access Key Secret" msgstr "" -#: xpack/plugins/cloud/forms.py:59 +#: xpack/plugins/cloud/forms.py:58 msgid "Select account" msgstr "选择账户" -#: xpack/plugins/cloud/forms.py:65 +#: xpack/plugins/cloud/forms.py:64 msgid "Select regions" msgstr "选择地域" -#: xpack/plugins/cloud/forms.py:71 +#: xpack/plugins/cloud/forms.py:70 msgid "Select instances" msgstr "选择实例" -#: xpack/plugins/cloud/forms.py:77 +#: xpack/plugins/cloud/forms.py:76 msgid "Select node" msgstr "选择节点" -#: xpack/plugins/cloud/forms.py:83 xpack/plugins/orgs/forms.py:18 +#: xpack/plugins/cloud/forms.py:82 xpack/plugins/orgs/forms.py:18 msgid "Select admins" msgstr "选择管理员" @@ -4078,106 +4068,152 @@ msgstr "选择管理员" msgid "Cloud center" msgstr "云管中心" -#: xpack/plugins/cloud/models.py:25 +#: xpack/plugins/cloud/models.py:30 msgid "Aliyun" msgstr "阿里云" -#: xpack/plugins/cloud/models.py:26 +#: xpack/plugins/cloud/models.py:31 msgid "AWS (China)" msgstr "AWS (中国)" -#: xpack/plugins/cloud/models.py:27 +#: xpack/plugins/cloud/models.py:32 msgid "AWS (International)" msgstr "AWS (国际)" -#: xpack/plugins/cloud/models.py:30 +#: xpack/plugins/cloud/models.py:35 msgid "Available" msgstr "有效" -#: xpack/plugins/cloud/models.py:31 +#: xpack/plugins/cloud/models.py:36 msgid "Unavailable" msgstr "无效" -#: xpack/plugins/cloud/models.py:36 +#: xpack/plugins/cloud/models.py:41 #: xpack/plugins/cloud/templates/cloud/account_detail.html:56 #: xpack/plugins/cloud/templates/cloud/account_list.html:13 msgid "Provider" msgstr "云服务商" -#: xpack/plugins/cloud/models.py:37 +#: xpack/plugins/cloud/models.py:42 msgid "Access key id" msgstr "" -#: xpack/plugins/cloud/models.py:38 +#: xpack/plugins/cloud/models.py:43 msgid "Access key secret" msgstr "" -#: xpack/plugins/cloud/models.py:39 +#: xpack/plugins/cloud/models.py:44 #: xpack/plugins/cloud/templates/cloud/account_detail.html:60 #: xpack/plugins/cloud/templates/cloud/account_list.html:14 msgid "Validity" msgstr "账户状态" -#: xpack/plugins/cloud/models.py:125 +#: xpack/plugins/cloud/models.py:130 msgid "Regions" msgstr "地域" -#: xpack/plugins/cloud/models.py:126 +#: xpack/plugins/cloud/models.py:131 msgid "Instances" msgstr "实例" -#: xpack/plugins/cloud/models.py:130 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:75 -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:14 +#: xpack/plugins/cloud/models.py:135 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:75 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:17 msgid "Date last sync" msgstr "最后同步日期" -#: xpack/plugins/cloud/models.py:169 xpack/plugins/cloud/models.py:183 +#: xpack/plugins/cloud/models.py:177 xpack/plugins/cloud/models.py:191 msgid "Succeed" msgstr "成功" -#: xpack/plugins/cloud/models.py:170 +#: xpack/plugins/cloud/models.py:178 msgid "Partial succeed" msgstr "" -#: xpack/plugins/cloud/models.py:173 xpack/plugins/cloud/models.py:187 -msgid "Sync task" -msgstr "同步任务" +#: xpack/plugins/cloud/models.py:181 +msgid "Sync instance task" +msgstr "同步实例任务" -#: xpack/plugins/cloud/models.py:174 +#: xpack/plugins/cloud/models.py:182 msgid "Result" -msgstr "" +msgstr "结果" -#: xpack/plugins/cloud/models.py:177 xpack/plugins/cloud/models.py:193 -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:69 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:68 +#: xpack/plugins/cloud/models.py:185 xpack/plugins/cloud/models.py:201 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:69 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:68 msgid "Date sync" msgstr "同步日期" -#: xpack/plugins/cloud/models.py:184 +#: xpack/plugins/cloud/models.py:192 msgid "Exist" msgstr "存在" -#: xpack/plugins/cloud/models.py:188 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:25 -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:26 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:26 -#: xpack/plugins/cloud/views.py:137 -msgid "Sync task history" -msgstr "同步历史列表" +#: xpack/plugins/cloud/models.py:195 +msgid "Sync task" +msgstr "同步任务" -#: xpack/plugins/cloud/models.py:189 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:91 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:63 +#: xpack/plugins/cloud/models.py:196 +msgid "Sync instance task history" +msgstr "同步实例任务历史" + +#: xpack/plugins/cloud/models.py:197 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:91 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:63 msgid "Instance" msgstr "实例" -#: xpack/plugins/cloud/models.py:190 -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:83 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:64 +#: xpack/plugins/cloud/models.py:198 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:83 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:64 msgid "Region" msgstr "地域" +#: xpack/plugins/cloud/providers/base.py:73 +msgid "任务执行开始: {}" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:77 +msgid "检测账户有效性: {}" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:80 +msgid "账户无效!" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:85 +msgid "账户有效!" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:91 +msgid "任务执行结束!" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:93 +msgid "" +"查看任务详细信息路径: XPack -> 云管中心 -> 任务列表 -> 任务详情(点击任务名" +"称) -> 查看同步历史列表/实例列表" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:130 +msgid "同步实例列表: {}" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:139 +msgid "同步地域列表: {}" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:143 +msgid "地域: {}" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:154 +msgid "实例: {}, 地域: {}" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:160 +msgid "正在创建资产..." +msgstr "" + #: xpack/plugins/cloud/templates/cloud/account_detail.html:22 #: xpack/plugins/cloud/views.py:72 msgid "Account detail" @@ -4188,50 +4224,64 @@ msgstr "账户详情" msgid "Create account" msgstr "创建账户" -#: xpack/plugins/cloud/templates/cloud/sync_task_create.html:91 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create.html:91 msgid "Loading..." msgstr "" -#: xpack/plugins/cloud/templates/cloud/sync_task_create.html:106 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create.html:106 msgid "Load failed" msgstr "加载失败" -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:22 -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:23 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:23 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:22 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:23 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:23 #: xpack/plugins/cloud/views.py:122 msgid "Sync task detail" msgstr "同步任务详情" -#: xpack/plugins/cloud/templates/cloud/sync_task_detail.html:28 -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:29 -#: xpack/plugins/cloud/templates/cloud/sync_task_instance.html:29 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:25 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:26 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:26 +#: xpack/plugins/cloud/views.py:137 +msgid "Sync task history" +msgstr "同步历史列表" + +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:28 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:29 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:29 #: xpack/plugins/cloud/views.py:180 -msgid "Sync task instance" +msgid "Sync instance list" msgstr "同步实例列表" -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:63 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:63 msgid "Total count" msgstr "总数" -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:64 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:64 msgid "Succeed count" msgstr "成功" -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:65 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:65 msgid "Failed count" msgstr "失败" -#: xpack/plugins/cloud/templates/cloud/sync_task_history.html:66 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:66 msgid "Exist count" msgstr "存在" -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:5 -#: xpack/plugins/cloud/views.py:101 -msgid "Create sync task" -msgstr "创建同步任务" +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:5 +msgid "Create sync instance task" +msgstr "创建同步实例任务" -#: xpack/plugins/cloud/templates/cloud/sync_task_list.html:79 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:14 +msgid "Run count" +msgstr "执行次数" + +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:15 +msgid "Instance count" +msgstr "实例个数" + +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:92 msgid "Sync success" msgstr "同步成功" @@ -4239,6 +4289,14 @@ msgstr "同步成功" msgid "Update account" msgstr "更新账户" +#: xpack/plugins/cloud/views.py:85 +msgid "Sync instance task list" +msgstr "同步实例任务列表" + +#: xpack/plugins/cloud/views.py:101 +msgid "Create sync Instance task" +msgstr "创建同步实例任务" + #: xpack/plugins/orgs/forms.py:14 #: xpack/plugins/orgs/templates/orgs/org_detail.html:76 #: xpack/plugins/orgs/templates/orgs/org_list.html:13 @@ -4283,6 +4341,15 @@ msgstr "创建组织" msgid "Update org" msgstr "更新组织" +#~ msgid "Sync instance task detail" +#~ msgstr "同步实例任务详情" + +#~ msgid "Sync task instance" +#~ msgstr "同步实例列表" + +#~ msgid "Sync instance task instance" +#~ msgstr "同步实例任务实例" + #~ msgid "Get sync task error" #~ msgstr "获取同步任务" diff --git a/apps/templates/_nav.html b/apps/templates/_nav.html index 2faf3de40..06c8e6b46 100644 --- a/apps/templates/_nav.html +++ b/apps/templates/_nav.html @@ -100,7 +100,7 @@ {% trans plugin.verbose_name %} {% else %} From 0b0b06a5c296d59c9318ccebd7d13bc281a09413 Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Mon, 15 Oct 2018 17:06:01 +0800 Subject: [PATCH 07/13] =?UTF-8?q?[Update]=20=E6=9B=B4=E6=96=B0requirements?= =?UTF-8?q?-aliyun?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements/requirements.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index d1aaf3b1a..791939d59 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -72,3 +72,5 @@ vine==1.1.4 drf-yasg==1.9.1 Werkzeug==0.14.1 drf-nested-routers==0.90.2 +aliyun-python-sdk-core-v3==2.9.1 +aliyun-python-sdk-ecs==4.10.1 From 3fa6807837caf42d4f15bb94f546e95a9c7fcb25 Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Tue, 16 Oct 2018 09:53:30 +0800 Subject: [PATCH 08/13] =?UTF-8?q?[Update]=20=E6=B7=BB=E5=8A=A0=EF=BC=88?= =?UTF-8?q?=E5=87=8F=E6=B3=95=EF=BC=89=E6=A0=87=E7=AD=BE=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/templatetags/common_tags.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/common/templatetags/common_tags.py b/apps/common/templatetags/common_tags.py index 7cafb0460..d77263955 100644 --- a/apps/common/templatetags/common_tags.py +++ b/apps/common/templatetags/common_tags.py @@ -106,3 +106,8 @@ def to_dict(data): def sort(data): print(data) return sorted(data) + + +@register.filter +def subtract(value, arg): + return value - arg From 11aefa479b9c6844b1ccf534785cb89bdbf360cc Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 16 Oct 2018 10:56:25 +0800 Subject: [PATCH 09/13] =?UTF-8?q?[Bugfix]=20=E4=BF=AE=E5=A4=8Dcommon?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/forms.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/common/forms.py b/apps/common/forms.py index 00f6af3d2..610e1a83e 100644 --- a/apps/common/forms.py +++ b/apps/common/forms.py @@ -18,6 +18,9 @@ class BaseForm(forms.Form): db_value = getattr(common_settings, name) django_value = getattr(settings, name) if hasattr(settings, name) else None + if db_value is None and django_value is None: + continue + if db_value is False or db_value: if isinstance(db_value, dict): db_value = json.dumps(db_value) From 910dd4e5936cf83df6649c3b8948b88ae1a89937 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 16 Oct 2018 12:03:11 +0800 Subject: [PATCH 10/13] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E7=94=9F=E6=88=90=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/models/node.py | 8 +++++--- apps/assets/views/asset.py | 5 +---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index 54535fb0a..009527908 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -203,12 +203,14 @@ class Node(OrgModelMixin): # 如果使用current_org 在set_current_org时会死循环 _current_org = get_current_org() with transaction.atomic(): - if _current_org.is_default(): + if _current_org.is_root(): key = '0' + elif _current_org.is_default(): + key = '1' else: set_current_org(Organization.root()) org_nodes_roots = cls.objects.filter(key__regex=r'^[0-9]+$') - org_nodes_roots_keys = org_nodes_roots.values_list('key', flat=True) or [0] + org_nodes_roots_keys = org_nodes_roots.values_list('key', flat=True) or ['1'] key = str(max([int(k) for k in org_nodes_roots_keys]) + 1) set_current_org(_current_org) root = cls.objects.create(key=key, value=_current_org.name) @@ -225,7 +227,7 @@ class Node(OrgModelMixin): @classmethod def default_node(cls): defaults = {'value': 'Default'} - return cls.objects.get_or_create(defaults=defaults, key='0') + return cls.objects.get_or_create(defaults=defaults, key='1') @classmethod def get_tree_name_ref(cls): diff --git a/apps/assets/views/asset.py b/apps/assets/views/asset.py index c36ad9cc9..ceb8c1404 100644 --- a/apps/assets/views/asset.py +++ b/apps/assets/views/asset.py @@ -45,10 +45,7 @@ class AssetListView(AdminUserRequiredMixin, TemplateView): template_name = 'assets/asset_list.html' def get_context_data(self, **kwargs): - if current_org.is_default(): - Node.default_node() - else: - Node.root() + Node.root() context = { 'app': _('Assets'), 'action': _('Asset list'), From 2c18a27e3a5936d26bf0d8e60891b8f3f97c8b9f Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 16 Oct 2018 12:37:42 +0800 Subject: [PATCH 11/13] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E5=88=9B=E5=BB=BA=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/models/asset.py | 3 ++- apps/assets/models/node.py | 3 ++- apps/orgs/mixins.py | 1 - 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/assets/models/asset.py b/apps/assets/models/asset.py index 55fb1723a..120a95689 100644 --- a/apps/assets/models/asset.py +++ b/apps/assets/models/asset.py @@ -34,7 +34,8 @@ def default_cluster(): def default_node(): try: from .node import Node - return Node.root() + root = Node.root() + return root except: return None diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index 009527908..35a55fe02 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -211,7 +211,8 @@ class Node(OrgModelMixin): set_current_org(Organization.root()) org_nodes_roots = cls.objects.filter(key__regex=r'^[0-9]+$') org_nodes_roots_keys = org_nodes_roots.values_list('key', flat=True) or ['1'] - key = str(max([int(k) for k in org_nodes_roots_keys]) + 1) + key = max([int(k) for k in org_nodes_roots_keys]) + key = str(key + 1) if key != 0 else '2' set_current_org(_current_org) root = cls.objects.create(key=key, value=_current_org.name) return root diff --git a/apps/orgs/mixins.py b/apps/orgs/mixins.py index 29ec794f1..917a220bf 100644 --- a/apps/orgs/mixins.py +++ b/apps/orgs/mixins.py @@ -4,7 +4,6 @@ from werkzeug.local import Local from django.db import models from django.utils.translation import ugettext_lazy as _ -from django.db.models import Q from django.shortcuts import redirect from django.forms import ModelForm from django.http.response import HttpResponseForbidden From 143fa060d13f7fba5e2d87eebc1cc7b69872bc30 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 16 Oct 2018 13:44:26 +0800 Subject: [PATCH 12/13] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/api/asset.py | 2 +- apps/assets/models/node.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/assets/api/asset.py b/apps/assets/api/asset.py index 5c4802fa7..54f0bacc2 100644 --- a/apps/assets/api/asset.py +++ b/apps/assets/api/asset.py @@ -74,7 +74,7 @@ class AssetViewSet(IDInFilterMixin, LabelFilter, BulkModelViewSet): .select_related('admin_user') self.filter_admin_user_id() self.filter_node() - return self.queryset + return self.queryset.distinct() class AssetListUpdateApi(IDInFilterMixin, ListBulkCreateUpdateDestroyAPIView): diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index 35a55fe02..8876fc2f1 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -138,7 +138,7 @@ class Node(OrgModelMixin): args.append(Q(nodes__key__regex=pattern) | Q(nodes=None)) else: kwargs['nodes__key__regex'] = pattern - assets = Asset.objects.filter(*args, **kwargs) + assets = Asset.objects.filter(*args, **kwargs).distinct() return assets def get_all_valid_assets(self): From ebecd005819aeb0b6ba4bb6deb9fefbdd2200ed7 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 16 Oct 2018 16:47:47 +0800 Subject: [PATCH 13/13] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E4=BC=98?= =?UTF-8?q?=E5=85=88=E7=BA=A7=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/api/cmd_filter.py | 4 +- apps/assets/forms/user.py | 2 +- apps/assets/models/cmd_filter.py | 4 +- apps/assets/models/user.py | 6 +- .../assets/templates/assets/asset_detail.html | 4 + .../templates/assets/cmd_filter_list.html | 2 +- apps/locale/zh/LC_MESSAGES/django.mo | Bin 55049 -> 55096 bytes apps/locale/zh/LC_MESSAGES/django.po | 318 +++++++++--------- apps/perms/api.py | 2 +- 9 files changed, 173 insertions(+), 169 deletions(-) diff --git a/apps/assets/api/cmd_filter.py b/apps/assets/api/cmd_filter.py index f4537cf17..14afc0ae3 100644 --- a/apps/assets/api/cmd_filter.py +++ b/apps/assets/api/cmd_filter.py @@ -26,7 +26,7 @@ class CommandFilterRuleViewSet(BulkModelViewSet): fpk = self.kwargs.get('filter_pk') if not fpk: return CommandFilterRule.objects.none() - group = get_object_or_404(CommandFilter, pk=fpk) - return group.rules.all().order_by('priority') + cmd_filter = get_object_or_404(CommandFilter, pk=fpk) + return cmd_filter.rules.all() diff --git a/apps/assets/forms/user.py b/apps/assets/forms/user.py index 740576067..f5c62a4ff 100644 --- a/apps/assets/forms/user.py +++ b/apps/assets/forms/user.py @@ -150,7 +150,7 @@ class SystemUserForm(OrgModelForm, PasswordAndKeyAuthForm): 'name': '* required', 'username': '* required', 'auto_push': _('Auto push system user to asset'), - 'priority': _('High level will be using login asset as default, ' + 'priority': _('1-100, High level will be using login asset as default, ' 'if user was granted more than 2 system user'), 'login_mode': _('If you choose manual login mode, you do not ' 'need to fill in the username and password.') diff --git a/apps/assets/models/cmd_filter.py b/apps/assets/models/cmd_filter.py index bd37db36e..170921318 100644 --- a/apps/assets/models/cmd_filter.py +++ b/apps/assets/models/cmd_filter.py @@ -44,7 +44,7 @@ class CommandFilterRule(OrgModelMixin): id = models.UUIDField(default=uuid.uuid4, primary_key=True) filter = models.ForeignKey('CommandFilter', on_delete=models.CASCADE, verbose_name=_("Filter"), related_name='rules') type = models.CharField(max_length=16, default=TYPE_COMMAND, choices=TYPE_CHOICES, verbose_name=_("Type")) - priority = models.IntegerField(default=50, verbose_name=_("Priority"), help_text=_("1-100, the lower will be match first"), + priority = models.IntegerField(default=50, verbose_name=_("Priority"), help_text=_("1-100, the higher will be match first"), validators=[MinValueValidator(1), MaxValueValidator(100)]) content = models.TextField(max_length=1024, verbose_name=_("Content"), help_text=_("One line one command")) action = models.IntegerField(default=ACTION_DENY, choices=ACTION_CHOICES, verbose_name=_("Action")) @@ -54,7 +54,7 @@ class CommandFilterRule(OrgModelMixin): created_by = models.CharField(max_length=128, blank=True, default='', verbose_name=_('Created by')) class Meta: - ordering = ('priority', 'action') + ordering = ('-priority', 'action') def __str__(self): return '{} % {}'.format(self.type, self.content) diff --git a/apps/assets/models/user.py b/apps/assets/models/user.py index cd90d4207..918440081 100644 --- a/apps/assets/models/user.py +++ b/apps/assets/models/user.py @@ -7,6 +7,7 @@ import logging from django.core.cache import cache from django.db import models from django.utils.translation import ugettext_lazy as _ +from django.core.validators import MinValueValidator, MaxValueValidator from common.utils import get_signer from ..const import SYSTEM_USER_CONN_CACHE_KEY @@ -111,7 +112,8 @@ class SystemUser(AssetUser): nodes = models.ManyToManyField('assets.Node', blank=True, verbose_name=_("Nodes")) assets = models.ManyToManyField('assets.Asset', blank=True, verbose_name=_("Assets")) - priority = models.IntegerField(default=10, verbose_name=_("Priority")) + priority = models.IntegerField(default=20, verbose_name=_("Priority"), + validators=[MinValueValidator(1), MaxValueValidator(100)]) protocol = models.CharField(max_length=16, choices=PROTOCOL_CHOICES, default='ssh', verbose_name=_('Protocol')) auto_push = models.BooleanField(default=True, verbose_name=_('Auto push')) sudo = models.TextField(default='/bin/whoami', verbose_name=_('Sudo')) @@ -168,7 +170,7 @@ class SystemUser(AssetUser): from .cmd_filter import CommandFilterRule rules = CommandFilterRule.objects.filter( filter__in=self.cmd_filters.all() - ).order_by('priority').distinct() + ).distinct() return rules @classmethod diff --git a/apps/assets/templates/assets/asset_detail.html b/apps/assets/templates/assets/asset_detail.html index 2f36688be..378de8b98 100644 --- a/apps/assets/templates/assets/asset_detail.html +++ b/apps/assets/templates/assets/asset_detail.html @@ -69,6 +69,10 @@ {% trans 'Port' %}: {{ asset.port }} + + {% trans 'Protocol' %}: + {{ asset.protocol }} + {% trans 'Admin user' %}: {{ asset.admin_user }} diff --git a/apps/assets/templates/assets/cmd_filter_list.html b/apps/assets/templates/assets/cmd_filter_list.html index 1586af8f9..78060177b 100644 --- a/apps/assets/templates/assets/cmd_filter_list.html +++ b/apps/assets/templates/assets/cmd_filter_list.html @@ -5,7 +5,7 @@
    {% trans 'System user bound some command filter, each command filter has some rules,'%} {% trans 'When user login asset with this system user, then run a command,' %} - {% trans 'The command will be filter by rules, higher priority(lower number) rule run first,' %} + {% trans 'The command will be filter by rules, higher priority rule run first,' %} {% trans 'When a rule matched, if rule action is allow, then allow command execute,' %} {% trans 'else if action is deny, then command with be deny,' %} {% trans 'else match next rule, if none matched, allowed' %} diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 13c0cabd8e151c336202c8bb019ca51fb503d8d3..d88a5bfaef399ce91967de0660f258bf9005b329 100644 GIT binary patch delta 15180 zcmZ|Wd7MvW|Htt&Glm&vm@&r87-liHF~S&TjBO}O_GHao)~s1lL;6}0vgX*6h)UKp z3fb4}mC{X0WGCHrbr*iG_neRZ`+Xme%k%ntuIpUeIp;eg_dR)Sz^1hUGgte1IF6J5 zS;r}jgRmUVHn-s!;!9Wn_ceB$2>cH7;zcZuzhe;$ZsIukFb)f184ST{sOz3aUDwX+ z(!}vOp(J{eD1<{X3df-?T!;bq2?paT)P!GPVLXmOcoAdq57a{QH}&#Gu_SRk>bj>f z4|YQ>v}aSF;%%EW}Y61VCj>^BK7YAc~;zC#v+n^RS9t+?c)DbU5E$9o> zPWPb3JAfg03=86EEQ-EsR5XC!b6!Izs$+4~K*^}~4AhA{gBqX(>Xvjt_3wkFa5#qH z0@N*8iIKP;i{a0xjXgkawaWKeD4HVeMGZY&VN1{%mGwPo9#|RvY z+R+@;#A{LGY`6F@Y9Xgl<6gkR_TG?x;6_3RPoQitS z*I*Mof;Ta$qjz0UCvRb)s9RM8HEv1NLeo(jd>R{JQ!KCd-?fJAsJGy2)IB_k$@m*; zz>v<~1jSHCn}}Lq71R!Eqb6v88m9$n;x?!g>yEk=eNg>IV4&WA9~BKS0o8FDYQov5 zTk|0%;5v)HMGf!^s{bX_^*2xx-m|=47w?NH2$hdFQ?M#=2KqF?04ka=8}$%QMBVcR zsDVF4^;?g+Mcc7B?m^wEv#14KLml}YjKX|fy{9}LbzK$I7f%Lio<3bUf2}N=ga({o z9X~`3{E5ZuQ4@TLTF4I65g$SIJC0@WXY|K_Zk~BjKmUWx3fPpmC054wy7{~n9U;N1 z>HLF@v2}OvXx~RoxE!_6^|%?g;YfV#MaLKW*a zT6lk-HN0xRiMkaNQAark)$vo*0&-9f-42Tnp?3bGGt*i%XM}sXt7j*(lQ4_DSc!RZXM@?|h;vZ2PIEPxu6->kj z7=SUoy`KRkFh=ixCKWx6tuY#Vp(c70lW`*IR;3(!{E2#7Li&2&h{+gF{H)m* zbz+k+56(g@U>@qEmRbHY^r_<)RDy5^>Ld=JF8m2~Ykozo{2FR!H&Oi_pdPZ|m%X2o z#n7L)8s@|5sO#&ZCT@y4xellk>;E$6uN{sgp@(ROb^HL+h*zTqI*Z!D6%4|=sC)U) z+Wq=@0|%q>#ZeO{p!%nv7El%SP}f6kuw_5aUps3KBtZ)RAUl7B<7OI2B9b2GoS7P&*D9=v^Ob`ifG~&f>8EK82b%6Sc5zY7HX$|qaNO{SG@7+qrMqiV+HJodfn$K&-~68RCL5gFceRq zCO&UoLmlNU)P(m@Px(LA?hNss?tG|)6hZAY4)tu5w|s505o(@RnEU>Bvxb+gVHj#b zW6gK45V4B|aT#iXpJM`U#&G-z!|->E!G{=vQA54ArWES>>Zk=Y8p`?WA!=)h?x+C< zp?2Uy4KM}E<9yTrdr+_8aa6xcSQu}k`Uej4POLEM*@?pXSQ+(}y^4Bm-yO#JYbBqO z$bD!~6YMaLp?3ZY>fYY4y#H`-0pX~VDvi3nB69nkbY%0+$Ci(N)$5mlx`oN8g;(-X zDNCg$>PUN_R@@JDGUF{j9W~J$ix-<8p(b99+QYz2K=luJ&HJ@I5*2qx z7T|M+Qn^E70&0Tn*S(3~K@BhuwSZ;j8dSfHs0AKC?feAlXwRcg>Z*AgbqoJS^(&C= zT_1zNdjHE)(NR=It*j9y;0vfD8;Qy2Lw%QjiaMzySQIa#CU|5P9LY~W;yBcJZBW5_%cR~@}AbQs0;SvQap`p!WsRB_jCU~CJ{%D=GQOG#LjpZ zdG4H6Z}P2(`>_lTVX}%iAN5RpjXqUwQqe;gGlt*Iu^wh(HtONZL7l`F)I+%w$Kql9 z5}Ol5W1ex|vr__fGSyJGu$kGx?1_3fUm3^wYhWJ2StQi)d5pq=SQ00o23le5 z+ffhEDb#?MQ3Ksa-P3@#yaiN5JrkLzXP~jgoiL5KKPKP@J}SD$J5dWcfx7StYG;3< z2FNqPJAtBR9O|togZ;5GYMe!w2iK#n{}Q#}-KdRxi(2?4)QS4;QPIvHqK+>5ZSR64 z>_wc4%Fja$_#tY5wWytJL%sjEQ2hcYdaqX)YT=2fXCn=@v1X`oIwKqKIen>Ug+nm~ z$DjsWjhbjDCgC@z9p6En)I-$5!zOtXrJ$~>jX~H7l;FfZ=Ge0T_T!Ew|C=P(HGq3-=7)Q$>F_7)h0dR-H7J?=r>l2_mH`j147KM^Z3 zzcZamB5uRR_$!9_@trWmaq1G+n93`Oqp%8YL!HP?RR1E=yp!mPT4*+Ef=Q_UGq57= zMtyVMLY`O0e>$h33*M&EoC)V3Ut-Sr8T==B>@t(T?T|lJ zzgQBN#}NF}44m)nyfA7(F{t(mmd~`fuGxHkd#^)B>(B>-xnPiWc-@?U(d1`Yyb5*1 zn^4cr4$FUok;Ff{iNzv(Y6)53%}^W_CtI9}8lj=t+-zfZLapQ_)D{Mq*{H3(Z7x8) zr>jx@3orD3&n~`@vn@xW9tn2o^uzAB8?!L!J!D7ng~eSh?vGl?D9cYUXPFK4kGPsEO{Qj`)9Oo+Vyf(2O=qqBc~);xw#ETpN`iin+gAWmD0; z9FJ;nQ4=i0Qn(z`@gS;QUz{=@YT*Sfjx|f-Ao9tmap$9UzQWvY{(vDq8m>{%&L1d& z`9JiGLQPc4;uMRkn^~4`h?=Oi#XT&31vT*))Q0AoOHkvkM4u|_snoHqXLM!{){K-1pF#l)f`^f8G z1T}D?#pNunhWb9Kg<4<}%XdW0^P)M(@}qoK8Hap3I+HC<`q;amyqSTTus&+wrWSWX z4g8Wh7>6=MK1I$AWyxigq)?pXwtMmYt#efywg(+qg z)X&XKOvI+B@djG^NYoGXv8Y=$%kqnmem-ZJB|bAZn%lh&&OVEeqb53q8tA&^@1Z9A z$Kv2my;~WE$|s@vS2k;)PN06S-2bMQcpml8y@0xKsOdxPe5%D8%w4DxJ7)12)WFv* zzHRYi)GrQsS9;%wsi=OnFjnvXGgRWR8*1V=t-}=5kTC9utR(n2+PZLkZ-gpExLE0K` z12s@_Bh*9P0{i0?)b~W2wO)I_wcLMo973WVzK$XIm38>q;$s${Hh(j(qHe)W)CoE3 zyn!Q7;}kQ?TD~eKk*{g_ZtFOIEnol%4KNI+;M>>+3xDPvSs!yKs{d%z1aFz|qOMk9KX29p(yuL82lt4{f9?N5G48Xn^h6Bves0pTHA)Jq)xB~T4@=H|z8(112 zSzIc|TWB@ZhPxualKGteRC0G_zK!ZI&EkdTQga0srhT2c+dP3<&=vDf)Wa6E!8_SF zGsAo?SMLAIR5al@)Iw%hJQuaoW#$^oZ#4I!ZrOLJ>#kY;mifr?1-|eWTo`pSr7cd! z+@JrARiUAs*~5GVwbRk4oz1j(iM8jLJ28v)qo{?1e(8-@1hs)gi&IeT)lokqvT&dh zovg!4=3w&;b26&mT=RW%xw#6p(9cn?*FMySuA29)J-}^MCc+m%OV&njORZ67*aIW+ z4U1=4`zq8(TTn|rU|vA2$l2tz=R?IsERIEuSI*)(sPFKmn|R{%T|10K?sqGeBHn-+ z;1uf2&YIWEyXGU*f`T@CTaH9sR}Pi0gnI94p~h)o`Ie}8J8$NRQ^!#xbm1h_+08(` z$RA=!JdEo1hxs?Ef6!Onz=cq83`S#u#hIw_>Y^rWje2;7TKhPkRVJG=Q4`HGm!mFN zkEyuJ;yY%*7H`4`)B-BtcuYf$v(emZ?cbqJ;v{NZ-)~gXsoX|gki6AfaXRXor!i_r z!%_Ee8fv0tsQxQ0-e_(&_nAk`@6Df3*PZk9Ie%EGtKKt*DZd8nyA2bZ=hJz042>zW-YTZ z>crYvJQy|p8y3$%jkicK^E<1lXoZ_m7w*Kqc*^3ZcX;_usGSZ+^?wt!kO}52^8<6W zx!K%revcaGEc$9wxkg2n+vyG58#VAi48)PBTQLSJ;1pE*Ce(uWS$qbyusu*-hqC`>{F#-JXuGMEQzS-u|X2wRvhq9z`0PD5S)v6+MFztj94wXjPT z-$3nyZ7O! z1tt2dQVzAEN@gvyvDprFK@W@jnXh3Y`M0e7W7HSd8Z3!FqBiuGS$Ll}PYP;dzUowT zK~vPv!{Hc@6EF@xvi7~G0dH6ww%_}!OeVG^KMb{jgE$v|M4jNkue}BAGtZ#fA0Xd5 zK4~PdtqMU!Kej|z(F`3 z=i_ZGf>RFbZ!p~dCAk%TUZO7Ci@NZzdD6US?YA+I_P;OyA6q`)i1(J{M~xGST6l3R zfR!*9Yg&5)#mw(CqoSR)GkaqQ@d(ra<1LbDGaPjjsO2Q=VL-2XM#NNbpA&Ni1~G9A~VCOm2RTd0LSvN-&hH&GmFfhm}~Q?mi;L|S5N zY=^pju?e^;B^ebzfl9{`Nq2i1yK)e5quL%qpn|WuE#>e+pz{7 zLrom~tv62bZ#jQ;C__S~qmHnl#htC=0Mx)E%<=dX@l4c!+fmnlhk6~)q521W=jFpt z<0e>~ZZ`B$(T>_-3G9x#@J-afQ&0mhw)|RD|1GG8Z=b~nQAhke>iVC|%a*@u{%!gn z_xk&Ssbq6O80uks2Q_g1@4bl%q6Ut}(io2^*Z@1=5c~rVpr1rPAYTc}TG>H}~C z-p|c=&&L{nFPKKYhntvMDUd;&&)l}DNy&O1R?*J7ou{!FebTWD@m=b}sIR8J&0U(B zQu}XeItIR+oVm2l!-@2G2K|Zuq<(?YlroWA7Db;6w6%7FtHig`A$O$pF-4y{wCGci zIFJ+9ci3!lpHjY|^dbK;g(t}=O`M3Ss52;umE7zqWt)FPw2NM^<5GO``Gm@c^g2YY z9`#++^*KpdNxcb9#72~>6#Zk(EcZs0XHt1U{{1|l)}I!Aed*!Y!)S#mb*TrEUrPDV zeK9R6CWP9P&jjjU5R}2&?z?G8zCzRraGie1D2Dnh_Hc&Ul_~0Dbv50z_F?4uQGz+6 zVU{b270BtommH$Nl&}08H?3;SQzI-tiM|u4ze3;Yl>V*Iq^TFoie8ahWyHMpNe(DErAhr-08?%5vHl+Ulmb?^lZruR``YGCx!F zQvK$hs}tegtdqw*TP-BC1(`3oCIV-;e^rZbu!&ke`o>@aWei21WO5g6_L0=XDRn8& zkz40=$^CN$f6jNiq$l}3a>u5pl&(zdN594N)64xA^(UVmOADX<}#EAG;a zB;VWAzNCy`JiZv5x;UNEm%4r;RHVdH^!bHyiqeMmAj*?Ze=3)W58{4GU+QITz9rNr zQHm3n#R-&;sK1IM^-{b|MV|&FU3@7w;wJ!JA-4!)aW`(oOURR)`+16ZHrFq)I0?&> zJ3)Dk`aSG~uTthxo_szdug}MhySsYP(q*Y$&P{lK9JA*CT5bnZ{OLZd-ZJzUnNKZy z*L@)~-Y?3{&WsJsZ&&<-$K9ow@r~oC9icp=_a;0{DM#tTSoO(Wre1?GnWE1c%D&v1 z_s3xJ{iyD8gKK2?J$CEWh>GDacuox0N7I&xLx`7AKjaRn5#`JMQui*-{cq$}b$Zzh z+e!G_$$doqH}a<$7(o+GS z_b9(x+v~aea39qy7CfBv2GT{{#99&IXNkV0aRr%M)VsP3YL(3lBD0$^lgzf$@y_$ zH^?<39&UXCY`ms8hTI+6rcsJh^4S4X&HaC@JRT0Ct`yamDNjECxVLIY z46I35ksj|_`U>?6)Jx$gM*Nz39!fjvX_Wos+YtMxSD>Cl(Wfb88}&-$-^k7I6>V(_ zgDBDNkUA-~J5YRw%wmywJ_giue27U69qt?<@CQR!U?A zvcEDzURJc7UYDpZbrb70jVwW}I^`#_Yw1-F2fAbH#=h8?NT1V`>Xei8I!Ws@_&+u9 z8Be_-xlz=wQ`cu5{)Ia&-b_7;dK#9aZ$av9agzJ6ZdA2D$m)|p8ArAy<;mxBDs|`` zic|4vtVKDW)41M&yzcQXT?(Z>m0G!Sg@oaKdnNRJxliAm=x4V^=A?FgqeRY@QPm^z zr6;7O*QlJ9^S|lU^VPS$sh1Xwxv*{eg{|{1PMCE0t55#Bbt+?!yt-=szsd7s#$B2| z>C*e-FD_qrVbjXXvsYZ2wDHosFWu;sHQltiNzwn`2ss1hu8zoger1Y((2R8#wtRG9 S)3lsPtMA9;Ox-^^?Ee7tQnV!i delta 15134 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 2324f0c0d..4c0305a50 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Jumpserver 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-15 15:30+0800\n" +"POT-Creation-Date: 2018-10-16 16:03+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -33,7 +33,7 @@ msgstr "更新节点资产硬件信息: {}" msgid "Test if the assets under the node are connectable: {}" msgstr "测试节点下资产是否可连接: {}" -#: assets/forms/asset.py:27 assets/models/asset.py:82 assets/models/user.py:112 +#: assets/forms/asset.py:27 assets/models/asset.py:83 assets/models/user.py:113 #: assets/templates/assets/asset_detail.html:183 #: assets/templates/assets/asset_detail.html:191 #: assets/templates/assets/system_user_asset.html:95 perms/models.py:32 @@ -41,10 +41,10 @@ msgid "Nodes" msgstr "节点管理" #: assets/forms/asset.py:30 assets/forms/asset.py:69 assets/forms/asset.py:112 -#: assets/forms/asset.py:116 assets/models/asset.py:87 -#: assets/models/cluster.py:19 assets/models/user.py:72 +#: assets/forms/asset.py:116 assets/models/asset.py:88 +#: assets/models/cluster.py:19 assets/models/user.py:73 #: assets/templates/assets/asset_detail.html:73 templates/_nav.html:24 -#: xpack/plugins/cloud/models.py:133 +#: xpack/plugins/cloud/models.py:137 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:67 #: xpack/plugins/orgs/templates/orgs/org_list.html:18 msgid "Admin user" @@ -61,7 +61,7 @@ msgstr "管理用户" msgid "Label" msgstr "标签" -#: assets/forms/asset.py:37 assets/forms/asset.py:76 assets/models/asset.py:78 +#: assets/forms/asset.py:37 assets/forms/asset.py:76 assets/models/asset.py:79 #: assets/models/domain.py:24 assets/models/domain.py:50 #: assets/templates/assets/user_asset_list.html:168 #: xpack/plugins/orgs/templates/orgs/org_list.html:17 @@ -75,7 +75,7 @@ msgstr "网域" #: perms/forms.py:44 perms/models.py:79 #: perms/templates/perms/asset_permission_list.html:57 #: perms/templates/perms/asset_permission_list.html:151 -#: xpack/plugins/cloud/models.py:132 +#: xpack/plugins/cloud/models.py:136 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:63 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:66 msgid "Node" @@ -104,7 +104,7 @@ msgstr "如果有多个的互相隔离的网络,设置资产属于的网域, msgid "Select assets" msgstr "选择资产" -#: assets/forms/asset.py:108 assets/models/asset.py:75 +#: assets/forms/asset.py:108 assets/models/asset.py:76 #: assets/models/domain.py:48 assets/templates/assets/admin_user_assets.html:53 #: assets/templates/assets/asset_detail.html:69 #: assets/templates/assets/domain_gateway_list.html:58 @@ -114,7 +114,7 @@ msgid "Port" msgstr "端口" #: assets/forms/domain.py:15 assets/forms/label.py:13 -#: assets/models/asset.py:242 assets/templates/assets/admin_user_list.html:28 +#: assets/models/asset.py:243 assets/templates/assets/admin_user_list.html:28 #: assets/templates/assets/domain_detail.html:60 #: assets/templates/assets/domain_list.html:26 #: assets/templates/assets/label_list.html:16 @@ -130,7 +130,7 @@ msgstr "端口" #: terminal/templates/terminal/command_list.html:73 #: terminal/templates/terminal/session_list.html:41 #: terminal/templates/terminal/session_list.html:72 -#: xpack/plugins/cloud/models.py:199 +#: xpack/plugins/cloud/models.py:207 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:65 #: xpack/plugins/orgs/templates/orgs/org_list.html:16 msgid "Asset" @@ -170,7 +170,7 @@ msgstr "不能包含特殊字符" #: users/templates/users/user_list.html:23 #: users/templates/users/user_profile.html:51 #: users/templates/users/user_pubkey_update.html:53 -#: xpack/plugins/cloud/models.py:40 xpack/plugins/cloud/models.py:128 +#: xpack/plugins/cloud/models.py:40 xpack/plugins/cloud/models.py:132 #: xpack/plugins/cloud/templates/cloud/account_detail.html:52 #: xpack/plugins/cloud/templates/cloud/account_list.html:12 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:55 @@ -201,7 +201,7 @@ msgstr "用户名" msgid "Password or private key passphrase" msgstr "密码或密钥密码" -#: assets/forms/user.py:26 assets/models/base.py:24 common/forms.py:104 +#: assets/forms/user.py:26 assets/models/base.py:24 common/forms.py:107 #: users/forms.py:17 users/forms.py:35 users/forms.py:47 #: users/templates/users/login.html:65 #: users/templates/users/reset_password.html:53 @@ -229,7 +229,7 @@ msgstr "密码和私钥, 必须输入一个" msgid "* Automatic login mode, must fill in the username." msgstr "自动登录模式,必须填写用户名" -#: assets/forms/user.py:146 assets/models/user.py:120 +#: assets/forms/user.py:146 assets/models/user.py:122 #: assets/templates/assets/_system_user.html:66 #: assets/templates/assets/system_user_detail.html:165 msgid "Command filter" @@ -241,17 +241,17 @@ msgstr "自动推送系统用户到资产" #: assets/forms/user.py:153 msgid "" -"High level will be using login asset as default, if user was granted more " -"than 2 system user" -msgstr "高优先级的系统用户将会作为默认登录用户" +"1-100, High level will be using login asset as default, if user was granted " +"more than 2 system user" +msgstr "1-100, 1最低优先级,100最高优先级。授权多个用户时,高优先级的系统用户将会作为默认登录用户" #: assets/forms/user.py:155 msgid "" "If you choose manual login mode, you do not need to fill in the username and " "password." -msgstr "如果选择手动登录模式,用户名和密码则不需要填写" +msgstr "如果选择手动登录模式,用户名和密码可以不填写" -#: assets/models/asset.py:72 assets/models/domain.py:47 +#: assets/models/asset.py:73 assets/models/domain.py:47 #: assets/templates/assets/_asset_list_modal.html:46 #: assets/templates/assets/admin_user_assets.html:52 #: assets/templates/assets/asset_detail.html:61 @@ -260,28 +260,28 @@ msgstr "如果选择手动登录模式,用户名和密码则不需要填写" #: assets/templates/assets/system_user_asset.html:51 #: assets/templates/assets/user_asset_list.html:46 #: assets/templates/assets/user_asset_list.html:162 -#: audits/templates/audits/login_log_list.html:52 common/forms.py:133 +#: audits/templates/audits/login_log_list.html:52 common/forms.py:136 #: perms/templates/perms/asset_permission_asset.html:55 #: users/templates/users/user_granted_asset.html:45 #: users/templates/users/user_group_granted_asset.html:45 msgid "IP" msgstr "IP" -#: assets/models/asset.py:73 assets/templates/assets/_asset_list_modal.html:45 +#: assets/models/asset.py:74 assets/templates/assets/_asset_list_modal.html:45 #: assets/templates/assets/admin_user_assets.html:51 #: assets/templates/assets/asset_detail.html:57 #: assets/templates/assets/asset_list.html:92 #: assets/templates/assets/system_user_asset.html:50 #: assets/templates/assets/user_asset_list.html:45 -#: assets/templates/assets/user_asset_list.html:161 common/forms.py:132 +#: assets/templates/assets/user_asset_list.html:161 common/forms.py:135 #: perms/templates/perms/asset_permission_asset.html:54 #: users/templates/users/user_granted_asset.html:44 #: users/templates/users/user_group_granted_asset.html:44 msgid "Hostname" msgstr "主机名" -#: assets/models/asset.py:74 assets/models/domain.py:49 -#: assets/models/user.py:115 +#: assets/models/asset.py:75 assets/models/domain.py:49 +#: assets/models/user.py:117 #: assets/templates/assets/domain_gateway_list.html:59 #: assets/templates/assets/system_user_detail.html:70 #: assets/templates/assets/system_user_list.html:31 @@ -290,90 +290,90 @@ msgstr "主机名" msgid "Protocol" msgstr "协议" -#: assets/models/asset.py:76 assets/templates/assets/asset_detail.html:97 +#: assets/models/asset.py:77 assets/templates/assets/asset_detail.html:97 #: assets/templates/assets/user_asset_list.html:165 msgid "Platform" msgstr "系统平台" -#: assets/models/asset.py:83 assets/models/cmd_filter.py:20 +#: assets/models/asset.py:84 assets/models/cmd_filter.py:20 #: assets/models/domain.py:52 assets/models/label.py:21 #: assets/templates/assets/asset_detail.html:105 #: assets/templates/assets/user_asset_list.html:169 msgid "Is active" msgstr "激活" -#: assets/models/asset.py:90 assets/templates/assets/asset_detail.html:65 +#: assets/models/asset.py:91 assets/templates/assets/asset_detail.html:65 msgid "Public IP" msgstr "公网IP" -#: assets/models/asset.py:91 assets/templates/assets/asset_detail.html:113 +#: assets/models/asset.py:92 assets/templates/assets/asset_detail.html:113 msgid "Asset number" msgstr "资产编号" -#: assets/models/asset.py:95 assets/templates/assets/asset_detail.html:77 +#: assets/models/asset.py:96 assets/templates/assets/asset_detail.html:77 msgid "Vendor" msgstr "制造商" -#: assets/models/asset.py:97 assets/templates/assets/asset_detail.html:81 +#: assets/models/asset.py:98 assets/templates/assets/asset_detail.html:81 msgid "Model" msgstr "型号" -#: assets/models/asset.py:99 assets/templates/assets/asset_detail.html:109 +#: assets/models/asset.py:100 assets/templates/assets/asset_detail.html:109 msgid "Serial number" msgstr "序列号" -#: assets/models/asset.py:102 +#: assets/models/asset.py:103 msgid "CPU model" msgstr "CPU型号" -#: assets/models/asset.py:103 +#: assets/models/asset.py:104 msgid "CPU count" msgstr "CPU数量" -#: assets/models/asset.py:104 +#: assets/models/asset.py:105 msgid "CPU cores" msgstr "CPU核数" -#: assets/models/asset.py:105 +#: assets/models/asset.py:106 msgid "CPU vcpus" msgstr "CPU总数" -#: assets/models/asset.py:107 assets/templates/assets/asset_detail.html:89 +#: assets/models/asset.py:108 assets/templates/assets/asset_detail.html:89 msgid "Memory" msgstr "内存" -#: assets/models/asset.py:109 +#: assets/models/asset.py:110 msgid "Disk total" msgstr "硬盘大小" -#: assets/models/asset.py:111 +#: assets/models/asset.py:112 msgid "Disk info" msgstr "硬盘信息" -#: assets/models/asset.py:114 assets/templates/assets/asset_detail.html:101 +#: assets/models/asset.py:115 assets/templates/assets/asset_detail.html:101 #: assets/templates/assets/user_asset_list.html:166 msgid "OS" msgstr "操作系统" -#: assets/models/asset.py:116 +#: assets/models/asset.py:117 msgid "OS version" msgstr "系统版本" -#: assets/models/asset.py:118 +#: assets/models/asset.py:119 msgid "OS arch" msgstr "系统架构" -#: assets/models/asset.py:120 +#: assets/models/asset.py:121 msgid "Hostname raw" msgstr "主机名原始" -#: assets/models/asset.py:124 assets/templates/assets/asset_create.html:34 +#: assets/models/asset.py:125 assets/templates/assets/asset_create.html:34 #: assets/templates/assets/asset_detail.html:220 #: assets/templates/assets/asset_update.html:39 templates/_nav.html:26 msgid "Labels" msgstr "标签管理" -#: assets/models/asset.py:126 assets/models/base.py:30 +#: assets/models/asset.py:127 assets/models/base.py:30 #: assets/models/cluster.py:28 assets/models/cmd_filter.py:24 #: assets/models/cmd_filter.py:54 assets/models/group.py:21 #: assets/templates/assets/admin_user_detail.html:68 @@ -384,11 +384,11 @@ msgstr "标签管理" #: ops/templates/ops/adhoc_detail.html:86 orgs/models.py:15 perms/models.py:37 #: perms/models.py:84 perms/templates/perms/asset_permission_detail.html:98 #: users/models/user.py:92 users/templates/users/user_detail.html:111 -#: xpack/plugins/cloud/models.py:46 xpack/plugins/cloud/models.py:136 +#: xpack/plugins/cloud/models.py:46 xpack/plugins/cloud/models.py:140 msgid "Created by" msgstr "创建者" -#: assets/models/asset.py:129 assets/models/cluster.py:26 +#: assets/models/asset.py:130 assets/models/cluster.py:26 #: assets/models/domain.py:21 assets/models/group.py:22 #: assets/models/label.py:24 assets/templates/assets/admin_user_detail.html:64 #: assets/templates/assets/cmd_filter_detail.html:69 @@ -399,14 +399,14 @@ msgstr "创建者" #: perms/templates/perms/asset_permission_detail.html:94 #: terminal/templates/terminal/terminal_detail.html:59 users/models/group.py:17 #: users/templates/users/user_group_detail.html:63 -#: xpack/plugins/cloud/models.py:47 xpack/plugins/cloud/models.py:137 +#: xpack/plugins/cloud/models.py:47 xpack/plugins/cloud/models.py:141 #: xpack/plugins/cloud/templates/cloud/account_detail.html:68 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:79 #: xpack/plugins/orgs/templates/orgs/org_detail.html:60 msgid "Date created" msgstr "创建日期" -#: assets/models/asset.py:131 assets/models/base.py:27 +#: assets/models/asset.py:132 assets/models/base.py:27 #: assets/models/cluster.py:29 assets/models/cmd_filter.py:21 #: assets/models/cmd_filter.py:51 assets/models/domain.py:19 #: assets/models/domain.py:51 assets/models/group.py:23 @@ -430,7 +430,7 @@ msgstr "创建日期" #: users/templates/users/user_group_detail.html:67 #: users/templates/users/user_group_list.html:14 #: users/templates/users/user_profile.html:130 xpack/plugins/cloud/models.py:45 -#: xpack/plugins/cloud/models.py:134 +#: xpack/plugins/cloud/models.py:138 #: xpack/plugins/cloud/templates/cloud/account_detail.html:72 #: xpack/plugins/cloud/templates/cloud/account_list.html:15 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:71 @@ -538,14 +538,14 @@ msgstr "过滤器" msgid "Type" msgstr "类型" -#: assets/models/cmd_filter.py:47 assets/models/user.py:114 +#: assets/models/cmd_filter.py:47 assets/models/user.py:115 #: assets/templates/assets/cmd_filter_rule_list.html:60 msgid "Priority" msgstr "优先级" #: assets/models/cmd_filter.py:47 -msgid "1-100, the lower will be match first" -msgstr "优先级可选范围为1-100,1最高优先级 100最低优先级" +msgid "1-100, the higher will be match first" +msgstr "优先级可选范围为1-100,1最低优先级,100最高优先级" #: assets/models/cmd_filter.py:49 #: assets/templates/assets/cmd_filter_rule_list.html:59 @@ -634,23 +634,23 @@ msgstr "分类" msgid "Key" msgstr "" -#: assets/models/user.py:108 +#: assets/models/user.py:109 msgid "Automatic login" msgstr "自动登录" -#: assets/models/user.py:109 +#: assets/models/user.py:110 msgid "Manually login" msgstr "手动登录" -#: assets/models/user.py:113 +#: assets/models/user.py:114 #: assets/templates/assets/_asset_group_bulk_update_modal.html:11 #: assets/templates/assets/system_user_asset.html:22 #: assets/templates/assets/system_user_detail.html:22 #: assets/views/admin_user.py:29 assets/views/admin_user.py:47 #: assets/views/admin_user.py:63 assets/views/admin_user.py:78 -#: assets/views/admin_user.py:102 assets/views/asset.py:53 -#: assets/views/asset.py:92 assets/views/asset.py:136 assets/views/asset.py:153 -#: assets/views/asset.py:177 assets/views/cmd_filter.py:30 +#: assets/views/admin_user.py:102 assets/views/asset.py:50 +#: assets/views/asset.py:89 assets/views/asset.py:133 assets/views/asset.py:150 +#: assets/views/asset.py:174 assets/views/cmd_filter.py:30 #: assets/views/cmd_filter.py:46 assets/views/cmd_filter.py:62 #: assets/views/cmd_filter.py:78 assets/views/cmd_filter.py:97 #: assets/views/cmd_filter.py:130 assets/views/cmd_filter.py:163 @@ -664,26 +664,26 @@ msgstr "手动登录" msgid "Assets" msgstr "资产管理" -#: assets/models/user.py:116 assets/templates/assets/_system_user.html:59 +#: assets/models/user.py:118 assets/templates/assets/_system_user.html:59 #: assets/templates/assets/system_user_detail.html:122 #: assets/templates/assets/system_user_update.html:10 msgid "Auto push" msgstr "自动推送" -#: assets/models/user.py:117 assets/templates/assets/system_user_detail.html:74 +#: assets/models/user.py:119 assets/templates/assets/system_user_detail.html:74 msgid "Sudo" msgstr "Sudo" -#: assets/models/user.py:118 assets/templates/assets/system_user_detail.html:79 +#: assets/models/user.py:120 assets/templates/assets/system_user_detail.html:79 msgid "Shell" msgstr "Shell" -#: assets/models/user.py:119 assets/templates/assets/system_user_detail.html:66 +#: assets/models/user.py:121 assets/templates/assets/system_user_detail.html:66 #: assets/templates/assets/system_user_list.html:32 msgid "Login mode" msgstr "登录模式" -#: assets/models/user.py:189 assets/templates/assets/user_asset_list.html:167 +#: assets/models/user.py:191 assets/templates/assets/user_asset_list.html:167 #: audits/models.py:19 audits/templates/audits/ftp_log_list.html:49 #: audits/templates/audits/ftp_log_list.html:72 perms/forms.py:40 #: perms/models.py:33 perms/models.py:81 @@ -798,7 +798,7 @@ msgstr "资产csv文件" msgid "If set id, will use this id update asset existed" msgstr "如果设置了id,则会使用该行信息更新该id的资产" -#: assets/templates/assets/_asset_list_modal.html:7 assets/views/asset.py:54 +#: assets/templates/assets/_asset_list_modal.html:7 assets/views/asset.py:51 #: templates/_nav.html:22 msgid "Asset list" msgstr "资产列表" @@ -893,7 +893,7 @@ msgid "Submit" msgstr "提交" #: assets/templates/assets/_user_asset_detail_modal.html:11 -#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:178 +#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:175 msgid "Asset detail" msgstr "资产详情" @@ -1157,7 +1157,7 @@ msgstr "" "左侧是资产树,右击可以新建、删除、更改树节点,授权资产也是以节点方式组织的," "右侧是属于该节点下的资产" -#: assets/templates/assets/asset_list.html:69 assets/views/asset.py:93 +#: assets/templates/assets/asset_list.html:69 assets/views/asset.py:90 msgid "Create asset" msgstr "创建资产" @@ -1322,10 +1322,8 @@ msgid "When user login asset with this system user, then run a command," msgstr "当用户使用这个系统用户登录资产,然后执行一个命令" #: assets/templates/assets/cmd_filter_list.html:8 -msgid "" -"The command will be filter by rules, higher priority(lower number) rule run " -"first," -msgstr "这个命令需要被绑定过滤器的所有规则匹配,高优先级(数字越低)先被匹配," +msgid "The command will be filter by rules, higher priority rule run first," +msgstr "这个命令需要被绑定过滤器的所有规则匹配,高优先级先被匹配," #: assets/templates/assets/cmd_filter_list.html:9 msgid "" @@ -1513,23 +1511,23 @@ msgstr "更新管理用户" msgid "Admin user detail" msgstr "管理用户详情" -#: assets/views/asset.py:67 templates/_nav_user.html:4 +#: assets/views/asset.py:64 templates/_nav_user.html:4 msgid "My assets" msgstr "我的资产" -#: assets/views/asset.py:107 +#: assets/views/asset.py:104 msgid "Bulk update asset success" msgstr "批量更新资产成功" -#: assets/views/asset.py:137 +#: assets/views/asset.py:134 msgid "Bulk update asset" msgstr "批量更新资产" -#: assets/views/asset.py:154 +#: assets/views/asset.py:151 msgid "Update asset" msgstr "更新资产" -#: assets/views/asset.py:294 +#: assets/views/asset.py:291 msgid "already exists" msgstr "已经存在" @@ -1664,7 +1662,7 @@ msgstr "选择用户" #: templates/_base_list.html:43 templates/_header_bar.html:8 #: terminal/templates/terminal/command_list.html:60 #: terminal/templates/terminal/session_list.html:61 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:50 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:52 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:50 msgid "Search" msgstr "搜索" @@ -1674,7 +1672,7 @@ msgstr "搜索" #: ops/templates/ops/adhoc_history_detail.html:49 #: ops/templates/ops/task_detail.html:55 #: terminal/templates/terminal/session_list.html:70 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:62 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:64 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:62 msgid "ID" msgstr "ID" @@ -1694,15 +1692,15 @@ msgid "MFA" msgstr "MFA" #: audits/templates/audits/login_log_list.html:55 -#: users/models/authentication.py:76 xpack/plugins/cloud/models.py:184 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:67 +#: users/models/authentication.py:76 xpack/plugins/cloud/models.py:192 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:69 msgid "Reason" msgstr "原因" #: audits/templates/audits/login_log_list.html:56 -#: users/models/authentication.py:77 xpack/plugins/cloud/models.py:183 -#: xpack/plugins/cloud/models.py:200 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:68 +#: users/models/authentication.py:77 xpack/plugins/cloud/models.py:191 +#: xpack/plugins/cloud/models.py:208 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:70 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:67 msgid "Status" msgstr "状态" @@ -1787,88 +1785,88 @@ msgstr "不是字符类型" msgid "Encrypt field using Secret Key" msgstr "" -#: common/forms.py:61 +#: common/forms.py:64 msgid "Current SITE URL" msgstr "当前站点URL" -#: common/forms.py:65 +#: common/forms.py:68 msgid "User Guide URL" msgstr "用户向导URL" -#: common/forms.py:66 +#: common/forms.py:69 msgid "User first login update profile done redirect to it" msgstr "用户第一次登录,修改profile后重定向到地址" -#: common/forms.py:69 +#: common/forms.py:72 msgid "Email Subject Prefix" msgstr "Email主题前缀" -#: common/forms.py:76 +#: common/forms.py:79 msgid "SMTP host" msgstr "SMTP主机" -#: common/forms.py:78 +#: common/forms.py:81 msgid "SMTP port" msgstr "SMTP端口" -#: common/forms.py:80 +#: common/forms.py:83 msgid "SMTP user" msgstr "SMTP账号" -#: common/forms.py:83 +#: common/forms.py:86 msgid "SMTP password" msgstr "SMTP密码" -#: common/forms.py:84 +#: common/forms.py:87 msgid "Some provider use token except password" msgstr "一些邮件提供商需要输入的是Token" -#: common/forms.py:87 common/forms.py:125 +#: common/forms.py:90 common/forms.py:128 msgid "Use SSL" msgstr "使用SSL" -#: common/forms.py:88 +#: common/forms.py:91 msgid "If SMTP port is 465, may be select" msgstr "如果SMTP端口是465,通常需要启用SSL" -#: common/forms.py:91 +#: common/forms.py:94 msgid "Use TLS" msgstr "使用TLS" -#: common/forms.py:92 +#: common/forms.py:95 msgid "If SMTP port is 587, may be select" msgstr "如果SMTP端口是587,通常需要启用TLS" -#: common/forms.py:98 +#: common/forms.py:101 msgid "LDAP server" msgstr "LDAP地址" -#: common/forms.py:101 +#: common/forms.py:104 msgid "Bind DN" msgstr "绑定DN" -#: common/forms.py:108 +#: common/forms.py:111 msgid "User OU" msgstr "用户OU" -#: common/forms.py:109 +#: common/forms.py:112 msgid "Use | split User OUs" msgstr "使用|分隔各OU" -#: common/forms.py:112 +#: common/forms.py:115 msgid "User search filter" msgstr "用户过滤器" -#: common/forms.py:113 +#: common/forms.py:116 #, python-format msgid "Choice may be (cn|uid|sAMAccountName)=%(user)s)" msgstr "可能的选项是(cn或uid或sAMAccountName=%(user)s)" -#: common/forms.py:116 +#: common/forms.py:119 msgid "User attr map" msgstr "LDAP属性映射" -#: common/forms.py:118 +#: common/forms.py:121 msgid "" "User attr map present how to map LDAP user attr to jumpserver, username,name," "email is jumpserver attr" @@ -1876,125 +1874,125 @@ msgstr "" "用户属性映射代表怎样将LDAP中用户属性映射到jumpserver用户上,username, name," "email 是jumpserver的属性" -#: common/forms.py:127 +#: common/forms.py:130 msgid "Enable LDAP auth" msgstr "启用LDAP认证" -#: common/forms.py:136 +#: common/forms.py:139 msgid "List sort by" msgstr "资产列表排序" -#: common/forms.py:139 +#: common/forms.py:142 msgid "Heartbeat interval" msgstr "心跳间隔" -#: common/forms.py:139 ops/models/adhoc.py:38 +#: common/forms.py:142 ops/models/adhoc.py:38 msgid "Units: seconds" msgstr "单位: 秒" -#: common/forms.py:142 +#: common/forms.py:145 msgid "Password auth" msgstr "密码认证" -#: common/forms.py:145 +#: common/forms.py:148 msgid "Public key auth" msgstr "密钥认证" -#: common/forms.py:148 common/templates/common/terminal_setting.html:68 +#: common/forms.py:151 common/templates/common/terminal_setting.html:68 #: terminal/forms.py:30 terminal/models.py:22 msgid "Command storage" msgstr "命令存储" -#: common/forms.py:149 +#: common/forms.py:152 msgid "" "Set terminal storage setting, `default` is the using as default,You can set " "other storage and some terminal using" msgstr "设置终端命令存储,default是默认用的存储方式" -#: common/forms.py:154 common/templates/common/terminal_setting.html:86 +#: common/forms.py:157 common/templates/common/terminal_setting.html:86 #: terminal/forms.py:35 terminal/models.py:23 msgid "Replay storage" msgstr "录像存储" -#: common/forms.py:155 +#: common/forms.py:158 msgid "" "Set replay storage setting, `default` is the using as default,You can set " "other storage and some terminal using" msgstr "设置终端录像存储,default是默认用的存储方式" -#: common/forms.py:165 +#: common/forms.py:168 msgid "MFA Secondary certification" msgstr "MFA 二次认证" -#: common/forms.py:167 +#: common/forms.py:170 msgid "" "After opening, the user login must use MFA secondary authentication (valid " "for all users, including administrators)" msgstr "开启后,用户登录必须使用MFA二次认证(对所有用户有效,包括管理员)" -#: common/forms.py:174 +#: common/forms.py:177 msgid "Limit the number of login failures" msgstr "限制登录失败次数" -#: common/forms.py:179 +#: common/forms.py:182 msgid "No logon interval" msgstr "禁止登录时间间隔" -#: common/forms.py:181 +#: common/forms.py:184 msgid "" "Tip :(unit/minute) if the user has failed to log in for a limited number of " "times, no login is allowed during this time interval." msgstr "" "提示: (单位: 分钟) 当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录." -#: common/forms.py:187 +#: common/forms.py:190 msgid "Connection max idle time" msgstr "SSH最大空闲时间" -#: common/forms.py:189 +#: common/forms.py:192 msgid "" "If idle time more than it, disconnect connection(only ssh now) Unit: minute" msgstr "提示: (单位: 分钟) 如果超过该配置没有操作,连接会被断开(仅ssh) " -#: common/forms.py:195 +#: common/forms.py:198 msgid "Password minimum length" msgstr "密码最小长度 " -#: common/forms.py:201 +#: common/forms.py:204 msgid "Must contain capital letters" msgstr "必须包含大写字母" -#: common/forms.py:203 +#: common/forms.py:206 msgid "" "After opening, the user password changes and resets must contain uppercase " "letters" msgstr "开启后,用户密码修改、重置必须包含大写字母" -#: common/forms.py:209 +#: common/forms.py:212 msgid "Must contain lowercase letters" msgstr "必须包含小写字母" -#: common/forms.py:210 +#: common/forms.py:213 msgid "" "After opening, the user password changes and resets must contain lowercase " "letters" msgstr "开启后,用户密码修改、重置必须包含小写字母" -#: common/forms.py:216 +#: common/forms.py:219 msgid "Must contain numeric characters" msgstr "必须包含数字字符" -#: common/forms.py:217 +#: common/forms.py:220 msgid "" "After opening, the user password changes and resets must contain numeric " "characters" msgstr "开启后,用户密码修改、重置必须包含数字字符" -#: common/forms.py:223 +#: common/forms.py:226 msgid "Must contain special characters" msgstr "必须包含特殊字符" -#: common/forms.py:224 +#: common/forms.py:227 msgid "" "After opening, the user password changes and resets must contain special " "characters" @@ -2332,7 +2330,7 @@ msgstr "任务列表" msgid "Task run history" msgstr "执行历史" -#: orgs/mixins.py:79 orgs/models.py:24 +#: orgs/mixins.py:78 orgs/models.py:24 msgid "Organization" msgstr "组织管理" @@ -2577,7 +2575,7 @@ msgstr "命令记录" msgid "Web terminal" msgstr "Web终端" -#: templates/_nav.html:53 +#: templates/_nav.html:53 templates/_nav_user.html:19 msgid "File manager" msgstr "文件管理" @@ -3189,8 +3187,8 @@ msgstr "用户名/密码 校验失败" msgid "MFA authentication failed" msgstr "MFA 认证失败" -#: users/models/authentication.py:67 xpack/plugins/cloud/models.py:176 -#: xpack/plugins/cloud/models.py:190 +#: users/models/authentication.py:67 xpack/plugins/cloud/models.py:184 +#: xpack/plugins/cloud/models.py:198 msgid "Failed" msgstr "失败" @@ -3270,7 +3268,7 @@ msgstr "安全令牌验证" #: users/templates/users/_base_otp.html:44 users/templates/users/_user.html:13 #: users/templates/users/user_profile_update.html:51 -#: xpack/plugins/cloud/models.py:129 +#: xpack/plugins/cloud/models.py:51 xpack/plugins/cloud/models.py:133 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:59 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:13 msgid "Account" @@ -4108,61 +4106,61 @@ msgstr "" msgid "Validity" msgstr "账户状态" -#: xpack/plugins/cloud/models.py:130 +#: xpack/plugins/cloud/models.py:134 msgid "Regions" msgstr "地域" -#: xpack/plugins/cloud/models.py:131 +#: xpack/plugins/cloud/models.py:135 msgid "Instances" msgstr "实例" -#: xpack/plugins/cloud/models.py:135 +#: xpack/plugins/cloud/models.py:139 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:75 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:17 msgid "Date last sync" msgstr "最后同步日期" -#: xpack/plugins/cloud/models.py:177 xpack/plugins/cloud/models.py:191 -msgid "Succeed" -msgstr "成功" - -#: xpack/plugins/cloud/models.py:178 -msgid "Partial succeed" -msgstr "" - -#: xpack/plugins/cloud/models.py:181 +#: xpack/plugins/cloud/models.py:145 xpack/plugins/cloud/models.py:189 msgid "Sync instance task" msgstr "同步实例任务" -#: xpack/plugins/cloud/models.py:182 +#: xpack/plugins/cloud/models.py:185 xpack/plugins/cloud/models.py:199 +msgid "Succeed" +msgstr "成功" + +#: xpack/plugins/cloud/models.py:186 +msgid "Partial succeed" +msgstr "" + +#: xpack/plugins/cloud/models.py:190 msgid "Result" msgstr "结果" -#: xpack/plugins/cloud/models.py:185 xpack/plugins/cloud/models.py:201 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:69 +#: xpack/plugins/cloud/models.py:193 xpack/plugins/cloud/models.py:209 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:71 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:68 msgid "Date sync" msgstr "同步日期" -#: xpack/plugins/cloud/models.py:192 +#: xpack/plugins/cloud/models.py:200 msgid "Exist" msgstr "存在" -#: xpack/plugins/cloud/models.py:195 +#: xpack/plugins/cloud/models.py:203 msgid "Sync task" msgstr "同步任务" -#: xpack/plugins/cloud/models.py:196 +#: xpack/plugins/cloud/models.py:204 msgid "Sync instance task history" msgstr "同步实例任务历史" -#: xpack/plugins/cloud/models.py:197 +#: xpack/plugins/cloud/models.py:205 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:91 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:63 msgid "Instance" msgstr "实例" -#: xpack/plugins/cloud/models.py:198 +#: xpack/plugins/cloud/models.py:206 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:83 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:64 msgid "Region" @@ -4233,39 +4231,39 @@ msgid "Load failed" msgstr "加载失败" #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:22 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:23 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:25 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:23 #: xpack/plugins/cloud/views.py:122 msgid "Sync task detail" msgstr "同步任务详情" #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:25 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:26 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:28 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:26 #: xpack/plugins/cloud/views.py:137 msgid "Sync task history" msgstr "同步历史列表" #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:28 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:29 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:31 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:29 #: xpack/plugins/cloud/views.py:180 msgid "Sync instance list" msgstr "同步实例列表" -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:63 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:65 msgid "Total count" msgstr "总数" -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:64 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:66 msgid "Succeed count" msgstr "成功" -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:65 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:67 msgid "Failed count" msgstr "失败" -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:66 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:68 msgid "Exist count" msgstr "存在" diff --git a/apps/perms/api.py b/apps/perms/api.py index bfc22bf4d..910ffb7f9 100644 --- a/apps/perms/api.py +++ b/apps/perms/api.py @@ -96,7 +96,7 @@ class UserGrantedNodesApi(ListAPIView): """ 查询用户授权的所有节点的API, 如果是超级用户或者是 app,切换到root org """ - permission_classes = (IsOrgAdmin,) + permission_classes = (IsOrgAdminOrAppUser,) serializer_class = NodeSerializer def change_org_if_need(self):