Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
8b3b517b
Commit
8b3b517b
authored
Apr 11, 2018
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Update] 修改授权规则详情列表页面
parent
7fc2ef00
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
519 additions
and
290 deletions
+519
-290
__init__.py
apps/__init__.py
+1
-1
asset.py
apps/assets/models/asset.py
+1
-1
user.py
apps/assets/models/user.py
+1
-1
django.mo
apps/i18n/zh/LC_MESSAGES/django.mo
+0
-0
django.po
apps/i18n/zh/LC_MESSAGES/django.po
+254
-223
api.py
apps/perms/api.py
+75
-1
forms.py
apps/perms/forms.py
+13
-0
models.py
apps/perms/models.py
+17
-1
asset_permission_asset.html
apps/perms/templates/perms/asset_permission_asset.html
+19
-19
asset_permission_detail.html
apps/perms/templates/perms/asset_permission_detail.html
+25
-21
asset_permission_user.html
apps/perms/templates/perms/asset_permission_user.html
+3
-3
api_urls.py
apps/perms/urls/api_urls.py
+42
-12
views_urls.py
apps/perms/urls/views_urls.py
+2
-2
views.py
apps/perms/views.py
+65
-4
user.py
apps/users/models/user.py
+1
-1
No files found.
apps/__init__.py
View file @
8b3b517b
...
@@ -2,4 +2,4 @@
...
@@ -2,4 +2,4 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
#
#
__version__
=
"1.
0
.0"
__version__
=
"1.
3
.0"
apps/assets/models/asset.py
View file @
8b3b517b
...
@@ -84,7 +84,7 @@ class Asset(models.Model):
...
@@ -84,7 +84,7 @@ class Asset(models.Model):
comment
=
models
.
TextField
(
max_length
=
128
,
default
=
''
,
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
comment
=
models
.
TextField
(
max_length
=
128
,
default
=
''
,
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
def
__str__
(
self
):
def
__str__
(
self
):
return
self
.
hostname
return
'{0.hostname}({0.ip})'
.
format
(
self
)
@property
@property
def
is_valid
(
self
):
def
is_valid
(
self
):
...
...
apps/assets/models/user.py
View file @
8b3b517b
...
@@ -109,7 +109,7 @@ class SystemUser(AssetUser):
...
@@ -109,7 +109,7 @@ class SystemUser(AssetUser):
shell
=
models
.
CharField
(
max_length
=
64
,
default
=
'/bin/bash'
,
verbose_name
=
_
(
'Shell'
))
shell
=
models
.
CharField
(
max_length
=
64
,
default
=
'/bin/bash'
,
verbose_name
=
_
(
'Shell'
))
def
__str__
(
self
):
def
__str__
(
self
):
return
self
.
name
return
'{0.name}({0.username})'
.
format
(
self
)
def
to_json
(
self
):
def
to_json
(
self
):
return
{
return
{
...
...
apps/i18n/zh/LC_MESSAGES/django.mo
View file @
8b3b517b
No preview for this file type
apps/i18n/zh/LC_MESSAGES/django.po
View file @
8b3b517b
...
@@ -8,7 +8,7 @@ msgid ""
...
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
msgstr ""
"Project-Id-Version: Jumpserver 0.3.3\n"
"Project-Id-Version: Jumpserver 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-
06 10:24
+0800\n"
"POT-Creation-Date: 2018-04-
11 15:13
+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: Jumpserver team<ibuler@qq.com>\n"
"Language-Team: Jumpserver team<ibuler@qq.com>\n"
...
@@ -17,45 +17,57 @@ msgstr ""
...
@@ -17,45 +17,57 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Transfer-Encoding: 8bit\n"
#: assets/api/node.py:
58
#: assets/api/node.py:
87
msgid "New node {}"
msgid "New node {}"
msgstr "新节点 {}"
msgstr "新节点 {}"
#: assets/api/node.py:
133
#: assets/api/node.py:
202
msgid "更新节点资产硬件信息: {}"
msgid "更新节点资产硬件信息: {}"
msgstr ""
msgstr ""
#: assets/api/node.py:
146
#: assets/api/node.py:
215
msgid "测试节点下资产是否可连接: {}"
msgid "测试节点下资产是否可连接: {}"
msgstr ""
msgstr ""
#: assets/forms/asset.py:24 assets/
forms/asset.py:60 assets/models/asset.py:5
3
#: assets/forms/asset.py:24 assets/
models/asset.py:53 assets/models/user.py:10
3
#: assets/
models/user.py:102 assets/
templates/assets/asset_detail.html:183
#: assets/templates/assets/asset_detail.html:183
#: assets/templates/assets/asset_detail.html:191
#: assets/templates/assets/asset_detail.html:191
#: assets/templates/assets/system_user_detail.html:166
#: assets/templates/assets/system_user_detail.html:166
perms/models.py:23
msgid "Nodes"
msgid "Nodes"
msgstr "节点管理"
msgstr "节点管理"
#: assets/forms/asset.py:27 assets/forms/asset.py:6
3 assets/forms/asset.py:103
#: assets/forms/asset.py:27 assets/forms/asset.py:6
6 assets/forms/asset.py:109
#: assets/forms/asset.py:1
07
assets/models/asset.py:57
#: assets/forms/asset.py:1
13
assets/models/asset.py:57
#: assets/models/cluster.py:19 assets/models/user.py:7
1
#: assets/models/cluster.py:19 assets/models/user.py:7
2
#: assets/templates/assets/asset_detail.html:73 templates/_nav.html:25
#: assets/templates/assets/asset_detail.html:73 templates/_nav.html:25
msgid "Admin user"
msgid "Admin user"
msgstr "管理用户"
msgstr "管理用户"
#: assets/forms/asset.py:30 assets/forms/asset.py:66 assets/models/asset.py:81
#: assets/forms/asset.py:30 assets/forms/asset.py:69 assets/forms/asset.py:125
#: assets/templates/assets/asset_create.html:33
#: assets/templates/assets/asset_create.html:35
#: assets/templates/assets/asset_detail.html:220
#: assets/templates/assets/asset_create.html:37
#: assets/templates/assets/asset_update.html:38 templates/_nav.html:27
#: assets/templates/assets/asset_list.html:75
msgid "Labels"
#: assets/templates/assets/asset_update.html:40
msgstr "标签管理"
#: assets/templates/assets/asset_update.html:42
#: assets/templates/assets/user_asset_list.html:34
msgid "Label"
msgstr "标签"
#: assets/forms/asset.py:34 assets/forms/asset.py:7
0
assets/models/asset.py:52
#: assets/forms/asset.py:34 assets/forms/asset.py:7
3
assets/models/asset.py:52
#: assets/models/domain.py:46
#: assets/models/domain.py:46
msgid "Domain"
msgid "Domain"
msgstr "网域"
msgstr "网域"
#: assets/forms/asset.py:42 assets/forms/asset.py:79
#: assets/forms/asset.py:38 assets/forms/asset.py:63 assets/forms/asset.py:77
#: assets/forms/asset.py:128 assets/templates/assets/asset_create.html:29
#: assets/templates/assets/asset_update.html:34 perms/forms.py:40
#: perms/forms.py:47 perms/models.py:67
#: perms/templates/perms/asset_permission_list.html:57
#: perms/templates/perms/asset_permission_list.html:142
msgid "Node"
msgstr "节点"
#: assets/forms/asset.py:45 assets/forms/asset.py:85
msgid ""
msgid ""
"root or other NOPASSWD sudo privilege user existed in asset,If asset is "
"root or other NOPASSWD sudo privilege user existed in asset,If asset is "
"windows or other set any one, more see admin user left menu"
"windows or other set any one, more see admin user left menu"
...
@@ -63,46 +75,41 @@ msgstr ""
...
@@ -63,46 +75,41 @@ msgstr ""
"root或其他拥有NOPASSWD: ALL权限的用户, 如果是windows或其它硬件可以随意设置一"
"root或其他拥有NOPASSWD: ALL权限的用户, 如果是windows或其它硬件可以随意设置一"
"个, 更多信息查看左侧 `管理用户` 菜单"
"个, 更多信息查看左侧 `管理用户` 菜单"
#: assets/forms/asset.py:4
5 assets/forms/asset.py:82
#: assets/forms/asset.py:4
8 assets/forms/asset.py:88
msgid "* required Must set exact system platform, Windows, Linux ..."
msgid "* required Must set exact system platform, Windows, Linux ..."
msgstr "* required 必须准确设置操作系统平台,如Windows, Linux ..."
msgstr "* required 必须准确设置操作系统平台,如Windows, Linux ..."
#: assets/forms/asset.py:4
6 assets/forms/asset.py:83
#: assets/forms/asset.py:4
9 assets/forms/asset.py:89
msgid ""
msgid ""
"If your have some network not connect with each other, you can set domain"
"If your have some network not connect with each other, you can set domain"
msgstr "如果有多个的互相隔离的网络,设置资产属于的网域,使用网域网关跳转登录"
msgstr "如果有多个的互相隔离的网络,设置资产属于的网域,使用网域网关跳转登录"
#: assets/forms/asset.py:9
0 assets/forms/asset.py:94
assets/forms/domain.py:16
#: assets/forms/asset.py:9
6 assets/forms/asset.py:100
assets/forms/domain.py:16
#: assets/forms/label.py:15
#: assets/forms/label.py:15
#: perms/templates/perms/asset_permission_asset.html:88
users/forms.py:272
#: perms/templates/perms/asset_permission_asset.html:88
msgid "Select assets"
msgid "Select assets"
msgstr "选择资产"
msgstr "选择资产"
#: assets/forms/asset.py:
99
assets/models/asset.py:51
#: assets/forms/asset.py:
105
assets/models/asset.py:51
#: assets/models/domain.py:44 assets/templates/assets/admin_user_assets.html:53
#: assets/models/domain.py:44 assets/templates/assets/admin_user_assets.html:53
#: assets/templates/assets/asset_detail.html:69
#: assets/templates/assets/asset_detail.html:69
#: assets/templates/assets/domain_gateway_list.html:58
#: assets/templates/assets/domain_gateway_list.html:58
#: assets/templates/assets/system_user_asset.html:51
#: assets/templates/assets/system_user_asset.html:51
#: assets/templates/assets/user_asset_list.html:21
msgid "Port"
msgid "Port"
msgstr "端口"
msgstr "端口"
#: assets/forms/asset.py:119 assets/templates/assets/asset_create.html:37
msgid "Select labels"
msgstr "选择标签"
#: assets/forms/asset.py:122 assets/templates/assets/admin_user_detail.html:91
msgid "Select nodes"
msgstr "选择节点"
#: assets/forms/domain.py:14 assets/forms/label.py:13
#: assets/forms/domain.py:14 assets/forms/label.py:13
#: assets/models/asset.py:16
5
assets/templates/assets/admin_user_list.html:25
#: assets/models/asset.py:16
9
assets/templates/assets/admin_user_list.html:25
#: assets/templates/assets/domain_detail.html:60
#: assets/templates/assets/domain_detail.html:60
#: assets/templates/assets/domain_list.html:15
#: assets/templates/assets/domain_list.html:15
#: assets/templates/assets/label_list.html:16
#: assets/templates/assets/label_list.html:16
#: assets/templates/assets/system_user_list.html:29 audits/models.py:11
#: assets/templates/assets/system_user_list.html:29 audits/models.py:11
#: audits/templates/audits/ftp_log_list.html:41
#: audits/templates/audits/ftp_log_list.html:41
#: audits/templates/audits/ftp_log_list.html:72 perms/models.py:17
#: audits/templates/audits/ftp_log_list.html:72 perms/forms.py:37
#: perms/models.py:22
#: perms/templates/perms/asset_permission_create_update.html:40
#: perms/templates/perms/asset_permission_list.html:56
#: perms/templates/perms/asset_permission_list.html:139
#: terminal/backends/command/models.py:11 terminal/models.py:123
#: terminal/backends/command/models.py:11 terminal/models.py:123
#: terminal/templates/terminal/command_list.html:40
#: terminal/templates/terminal/command_list.html:40
#: terminal/templates/terminal/command_list.html:73
#: terminal/templates/terminal/command_list.html:73
...
@@ -125,11 +132,12 @@ msgstr "资产"
...
@@ -125,11 +132,12 @@ msgstr "资产"
#: common/templates/common/terminal_setting.html:67
#: common/templates/common/terminal_setting.html:67
#: common/templates/common/terminal_setting.html:85 ops/models/adhoc.py:36
#: common/templates/common/terminal_setting.html:85 ops/models/adhoc.py:36
#: ops/templates/ops/task_detail.html:59 ops/templates/ops/task_list.html:35
#: ops/templates/ops/task_detail.html:59 ops/templates/ops/task_list.html:35
#: perms/models.py:14 perms/templates/perms/asset_permission_detail.html:62
#: perms/models.py:19 perms/templates/perms/asset_permission_detail.html:62
#: perms/templates/perms/asset_permission_list.html:53
#: perms/templates/perms/asset_permission_user.html:54 terminal/models.py:16
#: perms/templates/perms/asset_permission_user.html:54 terminal/models.py:16
#: terminal/models.py:149 terminal/templates/terminal/terminal_detail.html:43
#: terminal/models.py:149 terminal/templates/terminal/terminal_detail.html:43
#: terminal/templates/terminal/terminal_list.html:29 users/models/group.py:14
#: terminal/templates/terminal/terminal_list.html:29 users/models/group.py:14
#: users/models/user.py:
35
users/templates/users/_select_user_modal.html:13
#: users/models/user.py:
40
users/templates/users/_select_user_modal.html:13
#: users/templates/users/user_detail.html:63
#: users/templates/users/user_detail.html:63
#: users/templates/users/user_group_detail.html:55
#: users/templates/users/user_group_detail.html:55
#: users/templates/users/user_group_list.html:12
#: users/templates/users/user_group_list.html:12
...
@@ -145,8 +153,8 @@ msgstr "名称"
...
@@ -145,8 +153,8 @@ msgstr "名称"
#: assets/templates/assets/domain_gateway_list.html:60
#: assets/templates/assets/domain_gateway_list.html:60
#: assets/templates/assets/system_user_detail.html:62
#: assets/templates/assets/system_user_detail.html:62
#: assets/templates/assets/system_user_list.html:27
#: assets/templates/assets/system_user_list.html:27
#: perms/templates/perms/asset_permission_user.html:55 users/forms.py:1
4
#: perms/templates/perms/asset_permission_user.html:55 users/forms.py:1
3
#: users/models/authentication.py:45 users/models/user.py:3
4
#: users/models/authentication.py:45 users/models/user.py:3
9
#: users/templates/users/_select_user_modal.html:14
#: users/templates/users/_select_user_modal.html:14
#: users/templates/users/login.html:56
#: users/templates/users/login.html:56
#: users/templates/users/login_log_list.html:49
#: users/templates/users/login_log_list.html:49
...
@@ -161,7 +169,7 @@ msgid "Password or private key passphrase"
...
@@ -161,7 +169,7 @@ msgid "Password or private key passphrase"
msgstr "密码或密钥密码"
msgstr "密码或密钥密码"
#: assets/forms/user.py:25 assets/models/base.py:22 common/forms.py:113
#: assets/forms/user.py:25 assets/models/base.py:22 common/forms.py:113
#: users/forms.py:1
6 users/forms.py:25
users/templates/users/login.html:59
#: users/forms.py:1
5 users/forms.py:24
users/templates/users/login.html:59
#: users/templates/users/reset_password.html:52
#: users/templates/users/reset_password.html:52
#: users/templates/users/user_create.html:11
#: users/templates/users/user_create.html:11
#: users/templates/users/user_password_update.html:40
#: users/templates/users/user_password_update.html:40
...
@@ -170,7 +178,7 @@ msgstr "密码或密钥密码"
...
@@ -170,7 +178,7 @@ msgstr "密码或密钥密码"
msgid "Password"
msgid "Password"
msgstr "密码"
msgstr "密码"
#: assets/forms/user.py:28 users/models/user.py:
45
#: assets/forms/user.py:28 users/models/user.py:
50
msgid "Private key"
msgid "Private key"
msgstr "ssh私钥"
msgstr "ssh私钥"
...
@@ -199,7 +207,7 @@ msgstr "高优先级的系统用户将会作为默认登录用户"
...
@@ -199,7 +207,7 @@ msgstr "高优先级的系统用户将会作为默认登录用户"
#: assets/templates/assets/asset_list.html:87
#: assets/templates/assets/asset_list.html:87
#: assets/templates/assets/domain_gateway_list.html:57
#: assets/templates/assets/domain_gateway_list.html:57
#: assets/templates/assets/system_user_asset.html:50
#: assets/templates/assets/system_user_asset.html:50
#: assets/templates/assets/user_asset_list.html:
20
common/forms.py:144
#: assets/templates/assets/user_asset_list.html:
46
common/forms.py:144
#: perms/templates/perms/asset_permission_asset.html:55
#: perms/templates/perms/asset_permission_asset.html:55
#: users/templates/users/login_log_list.html:52
#: users/templates/users/login_log_list.html:52
#: users/templates/users/user_granted_asset.html:45
#: users/templates/users/user_granted_asset.html:45
...
@@ -212,7 +220,7 @@ msgstr "IP"
...
@@ -212,7 +220,7 @@ msgstr "IP"
#: assets/templates/assets/asset_detail.html:57
#: assets/templates/assets/asset_detail.html:57
#: assets/templates/assets/asset_list.html:86
#: assets/templates/assets/asset_list.html:86
#: assets/templates/assets/system_user_asset.html:49
#: assets/templates/assets/system_user_asset.html:49
#: assets/templates/assets/user_asset_list.html:
19
common/forms.py:143
#: assets/templates/assets/user_asset_list.html:
45
common/forms.py:143
#: perms/templates/perms/asset_permission_asset.html:54
#: perms/templates/perms/asset_permission_asset.html:54
#: users/templates/users/user_granted_asset.html:44
#: users/templates/users/user_granted_asset.html:44
#: users/templates/users/user_group_granted_asset.html:44
#: users/templates/users/user_group_granted_asset.html:44
...
@@ -221,7 +229,6 @@ msgstr "主机名"
...
@@ -221,7 +229,6 @@ msgstr "主机名"
#: assets/models/asset.py:54 assets/models/domain.py:48
#: assets/models/asset.py:54 assets/models/domain.py:48
#: assets/models/label.py:20 assets/templates/assets/asset_detail.html:105
#: assets/models/label.py:20 assets/templates/assets/asset_detail.html:105
#: perms/templates/perms/asset_permission_list.html:70
msgid "Is active"
msgid "Is active"
msgstr "激活"
msgstr "激活"
...
@@ -289,15 +296,21 @@ msgstr "系统架构"
...
@@ -289,15 +296,21 @@ msgstr "系统架构"
msgid "Hostname raw"
msgid "Hostname raw"
msgstr "主机名原始"
msgstr "主机名原始"
#: assets/models/asset.py:81 assets/templates/assets/asset_create.html:33
#: assets/templates/assets/asset_detail.html:220
#: assets/templates/assets/asset_update.html:38 templates/_nav.html:27
msgid "Labels"
msgstr "标签管理"
#: assets/models/asset.py:82 assets/models/base.py:28
#: assets/models/asset.py:82 assets/models/base.py:28
#: assets/models/cluster.py:28 assets/models/group.py:21
#: assets/models/cluster.py:28 assets/models/group.py:21
#: assets/templates/assets/admin_user_detail.html:68
#: assets/templates/assets/admin_user_detail.html:68
#: assets/templates/assets/asset_detail.html:117
#: assets/templates/assets/asset_detail.html:117
#: assets/templates/assets/domain_detail.html:72
#: assets/templates/assets/domain_detail.html:72
#: assets/templates/assets/system_user_detail.html:96
#: assets/templates/assets/system_user_detail.html:96
#: ops/templates/ops/adhoc_detail.html:86 perms/models.py:2
2 perms/models.py:79
#: ops/templates/ops/adhoc_detail.html:86 perms/models.py:2
8 perms/models.py:72
#: perms/templates/perms/asset_permission_detail.html:9
4
#: perms/templates/perms/asset_permission_detail.html:9
8
#: users/models/user.py:5
0
users/templates/users/user_detail.html:99
#: users/models/user.py:5
5
users/templates/users/user_detail.html:99
msgid "Created by"
msgid "Created by"
msgstr "创建者"
msgstr "创建者"
...
@@ -307,8 +320,8 @@ msgstr "创建者"
...
@@ -307,8 +320,8 @@ msgstr "创建者"
#: assets/templates/assets/domain_detail.html:68
#: assets/templates/assets/domain_detail.html:68
#: assets/templates/assets/system_user_detail.html:92
#: assets/templates/assets/system_user_detail.html:92
#: ops/templates/ops/adhoc_detail.html:90 ops/templates/ops/task_detail.html:63
#: ops/templates/ops/adhoc_detail.html:90 ops/templates/ops/task_detail.html:63
#: perms/models.py:2
3 perms/models.py:80
#: perms/models.py:2
9 perms/models.py:73
#: perms/templates/perms/asset_permission_detail.html:9
0
#: perms/templates/perms/asset_permission_detail.html:9
4
#: terminal/templates/terminal/terminal_detail.html:59 users/models/group.py:17
#: terminal/templates/terminal/terminal_detail.html:59 users/models/group.py:17
#: users/templates/users/user_group_detail.html:63
#: users/templates/users/user_group_detail.html:63
msgid "Date created"
msgid "Date created"
...
@@ -325,10 +338,10 @@ msgstr "创建日期"
...
@@ -325,10 +338,10 @@ msgstr "创建日期"
#: assets/templates/assets/domain_list.html:17
#: assets/templates/assets/domain_list.html:17
#: assets/templates/assets/system_user_detail.html:100
#: assets/templates/assets/system_user_detail.html:100
#: assets/templates/assets/system_user_list.html:33 common/models.py:30
#: assets/templates/assets/system_user_list.html:33 common/models.py:30
#: ops/models/adhoc.py:42 perms/models.py:
24 perms/models.py:81
#: ops/models/adhoc.py:42 perms/models.py:
30 perms/models.py:74
#: perms/templates/perms/asset_permission_detail.html:
98
terminal/models.py:26
#: perms/templates/perms/asset_permission_detail.html:
102
terminal/models.py:26
#: terminal/templates/terminal/terminal_detail.html:63 users/models/group.py:15
#: terminal/templates/terminal/terminal_detail.html:63 users/models/group.py:15
#: users/models/user.py:
47
users/templates/users/user_detail.html:111
#: users/models/user.py:
52
users/templates/users/user_detail.html:111
#: users/templates/users/user_group_detail.html:67
#: users/templates/users/user_group_detail.html:67
#: users/templates/users/user_group_list.html:14
#: users/templates/users/user_group_list.html:14
#: users/templates/users/user_profile.html:114
#: users/templates/users/user_profile.html:114
...
@@ -351,7 +364,7 @@ msgstr "带宽"
...
@@ -351,7 +364,7 @@ msgstr "带宽"
msgid "Contact"
msgid "Contact"
msgstr "联系人"
msgstr "联系人"
#: assets/models/cluster.py:22 users/models/user.py:4
1
#: assets/models/cluster.py:22 users/models/user.py:4
6
#: users/templates/users/user_detail.html:76
#: users/templates/users/user_detail.html:76
msgid "Phone"
msgid "Phone"
msgstr "手机"
msgstr "手机"
...
@@ -377,7 +390,7 @@ msgid "Default"
...
@@ -377,7 +390,7 @@ msgid "Default"
msgstr "默认"
msgstr "默认"
#: assets/models/cluster.py:36 assets/models/label.py:13
#: assets/models/cluster.py:36 assets/models/label.py:13
#: users/models/user.py:2
66
#: users/models/user.py:2
85
msgid "System"
msgid "System"
msgstr "系统"
msgstr "系统"
...
@@ -389,14 +402,14 @@ msgstr "默认Cluster"
...
@@ -389,14 +402,14 @@ msgstr "默认Cluster"
msgid "Cluster"
msgid "Cluster"
msgstr "集群"
msgstr "集群"
#: assets/models/domain.py:45 assets/models/user.py:10
4
#: assets/models/domain.py:45 assets/models/user.py:10
6
#: assets/templates/assets/domain_gateway_list.html:59
#: assets/templates/assets/domain_gateway_list.html:59
#: assets/templates/assets/system_user_detail.html:66
#: assets/templates/assets/system_user_detail.html:66
#: assets/templates/assets/system_user_list.html:28
#: assets/templates/assets/system_user_list.html:28
msgid "Protocol"
msgid "Protocol"
msgstr "协议"
msgstr "协议"
#: assets/models/group.py:30
perms/models.py:18
#: assets/models/group.py:30
msgid "Asset group"
msgid "Asset group"
msgstr "资产组"
msgstr "资产组"
...
@@ -406,15 +419,19 @@ msgstr "默认资产组"
...
@@ -406,15 +419,19 @@ msgstr "默认资产组"
#: assets/models/label.py:14 audits/models.py:9
#: assets/models/label.py:14 audits/models.py:9
#: audits/templates/audits/ftp_log_list.html:33
#: audits/templates/audits/ftp_log_list.html:33
#: audits/templates/audits/ftp_log_list.html:71 perms/models.py:15
#: audits/templates/audits/ftp_log_list.html:71 perms/forms.py:14
#: perms/forms.py:31 perms/models.py:20
#: perms/templates/perms/asset_permission_create_update.html:36
#: perms/templates/perms/asset_permission_list.html:54
#: perms/templates/perms/asset_permission_list.html:133
#: terminal/backends/command/models.py:10 terminal/models.py:122
#: terminal/backends/command/models.py:10 terminal/models.py:122
#: terminal/templates/terminal/command_list.html:32
#: terminal/templates/terminal/command_list.html:32
#: terminal/templates/terminal/command_list.html:72
#: terminal/templates/terminal/command_list.html:72
#: terminal/templates/terminal/session_list.html:33
#: terminal/templates/terminal/session_list.html:33
#: terminal/templates/terminal/session_list.html:71 users/forms.py:2
20
#: terminal/templates/terminal/session_list.html:71 users/forms.py:2
19
#: users/models/user.py:30 users/models/user.py:2
54
#: users/models/user.py:30 users/models/user.py:2
73
#: users/templates/users/user_group_detail.html:78
#: users/templates/users/user_group_detail.html:78
#: users/templates/users/user_group_list.html:13 users/views/user.py:33
4
#: users/templates/users/user_group_list.html:13 users/views/user.py:33
5
msgid "User"
msgid "User"
msgstr "用户"
msgstr "用户"
...
@@ -431,30 +448,49 @@ msgstr "分类"
...
@@ -431,30 +448,49 @@ msgstr "分类"
msgid "Key"
msgid "Key"
msgstr ""
msgstr ""
#: assets/models/user.py:103
#: assets/models/user.py:104
#: assets/templates/assets/_asset_group_bulk_update_modal.html:11
#: assets/templates/assets/system_user_asset.html:21
#: 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:49
#: assets/views/asset.py:95 assets/views/asset.py:155 assets/views/asset.py:172
#: assets/views/asset.py:196 assets/views/domain.py:29
#: assets/views/domain.py:45 assets/views/domain.py:61
#: assets/views/domain.py:74 assets/views/domain.py:98
#: assets/views/domain.py:126 assets/views/domain.py:150
#: assets/views/label.py:26 assets/views/label.py:42 assets/views/label.py:58
#: assets/views/system_user.py:28 assets/views/system_user.py:44
#: assets/views/system_user.py:60 assets/views/system_user.py:74
#: templates/_nav.html:20
msgid "Assets"
msgstr "资产管理"
#: assets/models/user.py:105
msgid "Priority"
msgid "Priority"
msgstr "优先级"
msgstr "优先级"
#: assets/models/user.py:10
5
assets/templates/assets/_system_user.html:58
#: assets/models/user.py:10
7
assets/templates/assets/_system_user.html:58
#: assets/templates/assets/system_user_detail.html:118
#: assets/templates/assets/system_user_detail.html:118
#: assets/templates/assets/system_user_update.html:11
#: assets/templates/assets/system_user_update.html:11
msgid "Auto push"
msgid "Auto push"
msgstr "自动推送"
msgstr "自动推送"
#: assets/models/user.py:10
6
assets/templates/assets/system_user_detail.html:70
#: assets/models/user.py:10
8
assets/templates/assets/system_user_detail.html:70
msgid "Sudo"
msgid "Sudo"
msgstr "Sudo"
msgstr "Sudo"
#: assets/models/user.py:10
7
assets/templates/assets/system_user_detail.html:75
#: assets/models/user.py:10
9
assets/templates/assets/system_user_detail.html:75
msgid "Shell"
msgid "Shell"
msgstr "Shell"
msgstr "Shell"
#: assets/models/user.py:1
50
audits/models.py:12
#: assets/models/user.py:1
49
audits/models.py:12
#: audits/templates/audits/ftp_log_list.html:49
#: audits/templates/audits/ftp_log_list.html:49
#: audits/templates/audits/ftp_log_list.html:73 perms/forms.py:25
#: audits/templates/audits/ftp_log_list.html:73 perms/forms.py:43
#: perms/models.py:19 perms/models.py:76
#: perms/models.py:24 perms/models.py:69
#: perms/templates/perms/asset_permission_detail.html:136
#: perms/templates/perms/asset_permission_detail.html:140
#: perms/templates/perms/asset_permission_list.html:69 templates/_nav.html:26
#: perms/templates/perms/asset_permission_list.html:58
#: perms/templates/perms/asset_permission_list.html:145 templates/_nav.html:26
#: terminal/backends/command/models.py:12 terminal/models.py:124
#: terminal/backends/command/models.py:12 terminal/models.py:124
#: terminal/templates/terminal/command_list.html:48
#: terminal/templates/terminal/command_list.html:48
#: terminal/templates/terminal/command_list.html:74
#: terminal/templates/terminal/command_list.html:74
...
@@ -496,12 +532,8 @@ msgstr "测试系统用户可连接性: {}"
...
@@ -496,12 +532,8 @@ msgstr "测试系统用户可连接性: {}"
msgid "定期测试系统用户可连接性: {}"
msgid "定期测试系统用户可连接性: {}"
msgstr ""
msgstr ""
#: assets/tasks.py:392
#: assets/tasks.py:398
msgid "推送系统用户到节点资产: {} => {}"
msgid "推送系统用户到入资产: {}"
msgstr ""
#: assets/tasks.py:433
msgid "推送节点系统用户到新加入资产中: {}"
msgstr ""
msgstr ""
#: assets/templates/assets/_asset_group_bulk_update_modal.html:5
#: assets/templates/assets/_asset_group_bulk_update_modal.html:5
...
@@ -512,28 +544,13 @@ msgstr "更新用户组"
...
@@ -512,28 +544,13 @@ msgstr "更新用户组"
msgid "Hint: only change the field you want to update."
msgid "Hint: only change the field you want to update."
msgstr "仅修改你需要更新的字段"
msgstr "仅修改你需要更新的字段"
#: assets/templates/assets/_asset_group_bulk_update_modal.html:11
#: assets/templates/assets/system_user_asset.html:21
#: 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:49
#: assets/views/asset.py:95 assets/views/asset.py:155 assets/views/asset.py:172
#: assets/views/asset.py:196 assets/views/domain.py:29
#: assets/views/domain.py:45 assets/views/domain.py:61
#: assets/views/domain.py:74 assets/views/domain.py:98
#: assets/views/domain.py:126 assets/views/domain.py:150
#: assets/views/label.py:26 assets/views/label.py:42 assets/views/label.py:58
#: assets/views/system_user.py:28 assets/views/system_user.py:44
#: assets/views/system_user.py:60 assets/views/system_user.py:74
#: templates/_nav.html:20
msgid "Assets"
msgstr "资产管理"
#: assets/templates/assets/_asset_group_bulk_update_modal.html:13
#: assets/templates/assets/_asset_group_bulk_update_modal.html:13
msgid "Select Asset"
msgid "Select Asset"
msgstr "选择资产"
msgstr "选择资产"
#: assets/templates/assets/_asset_group_bulk_update_modal.html:21
#: assets/templates/assets/_asset_group_bulk_update_modal.html:21
#: assets/templates/assets/user_asset_list.html:48
#: users/templates/users/user_granted_asset.html:47
msgid "System users"
msgid "System users"
msgstr "系统用户"
msgstr "系统用户"
...
@@ -569,17 +586,17 @@ msgstr "如果设置了id,则会使用该行信息更新该id的资产"
...
@@ -569,17 +586,17 @@ msgstr "如果设置了id,则会使用该行信息更新该id的资产"
#: assets/templates/assets/_asset_list_modal.html:22
#: assets/templates/assets/_asset_list_modal.html:22
#: assets/templates/assets/asset_list.html:88
#: assets/templates/assets/asset_list.html:88
#: assets/templates/assets/user_asset_list.html:22
msgid "Hardware"
msgid "Hardware"
msgstr "硬件"
msgstr "硬件"
#: assets/templates/assets/_asset_list_modal.html:23
#: assets/templates/assets/_asset_list_modal.html:23
#: assets/templates/assets/asset_detail.html:143
#: assets/templates/assets/asset_detail.html:143
#: assets/templates/assets/asset_list.html:89
#: assets/templates/assets/asset_list.html:89
#: assets/templates/assets/user_asset_list.html:23 perms/models.py:20
#: assets/templates/assets/user_asset_list.html:47 perms/models.py:25
#: perms/models.py:77
#: perms/models.py:70
#: perms/templates/perms/asset_permission_create_update.html:51
#: perms/templates/perms/asset_permission_create_update.html:47
#: perms/templates/perms/asset_permission_detail.html:116
#: perms/templates/perms/asset_permission_detail.html:120
#: perms/templates/perms/asset_permission_list.html:59
#: terminal/templates/terminal/terminal_list.html:34
#: terminal/templates/terminal/terminal_list.html:34
#: users/templates/users/_select_user_modal.html:18
#: users/templates/users/_select_user_modal.html:18
#: users/templates/users/user_detail.html:128
#: users/templates/users/user_detail.html:128
...
@@ -596,7 +613,6 @@ msgstr "激活中"
...
@@ -596,7 +613,6 @@ msgstr "激活中"
#: assets/templates/assets/asset_list.html:90
#: assets/templates/assets/asset_list.html:90
#: assets/templates/assets/system_user_asset.html:52
#: assets/templates/assets/system_user_asset.html:52
#: assets/templates/assets/system_user_list.html:30
#: assets/templates/assets/system_user_list.html:30
#: users/templates/users/user_granted_asset.html:47
#: users/templates/users/user_group_granted_asset.html:47
#: users/templates/users/user_group_granted_asset.html:47
msgid "Reachable"
msgid "Reachable"
msgstr "可连接"
msgstr "可连接"
...
@@ -610,7 +626,7 @@ msgstr "可连接"
...
@@ -610,7 +626,7 @@ msgstr "可连接"
#: assets/templates/assets/system_user_list.html:34
#: assets/templates/assets/system_user_list.html:34
#: ops/templates/ops/adhoc_history.html:59 ops/templates/ops/task_adhoc.html:64
#: ops/templates/ops/adhoc_history.html:59 ops/templates/ops/task_adhoc.html:64
#: ops/templates/ops/task_history.html:65 ops/templates/ops/task_list.html:42
#: ops/templates/ops/task_history.html:65 ops/templates/ops/task_list.html:42
#: perms/templates/perms/asset_permission_list.html:
72
#: perms/templates/perms/asset_permission_list.html:
60
#: terminal/templates/terminal/session_list.html:80
#: terminal/templates/terminal/session_list.html:80
#: terminal/templates/terminal/terminal_list.html:36
#: terminal/templates/terminal/terminal_list.html:36
#: users/templates/users/user_group_list.html:15
#: users/templates/users/user_group_list.html:15
...
@@ -656,7 +672,7 @@ msgstr "激活所选"
...
@@ -656,7 +672,7 @@ msgstr "激活所选"
#: common/templates/common/email_setting.html:60
#: common/templates/common/email_setting.html:60
#: common/templates/common/ldap_setting.html:60
#: common/templates/common/ldap_setting.html:60
#: common/templates/common/terminal_setting.html:103
#: common/templates/common/terminal_setting.html:103
#: perms/templates/perms/asset_permission_create_update.html:7
2
#: perms/templates/perms/asset_permission_create_update.html:7
0
#: terminal/templates/terminal/session_list.html:120
#: terminal/templates/terminal/session_list.html:120
#: terminal/templates/terminal/terminal_update.html:48
#: terminal/templates/terminal/terminal_update.html:48
#: users/templates/users/_user.html:44
#: users/templates/users/_user.html:44
...
@@ -683,7 +699,7 @@ msgstr "提交"
...
@@ -683,7 +699,7 @@ msgstr "提交"
#: assets/templates/assets/system_user_detail.html:26
#: assets/templates/assets/system_user_detail.html:26
#: assets/templates/assets/system_user_list.html:88
#: assets/templates/assets/system_user_list.html:88
#: perms/templates/perms/asset_permission_detail.html:30
#: perms/templates/perms/asset_permission_detail.html:30
#: perms/templates/perms/asset_permission_list.html:1
2
1
#: perms/templates/perms/asset_permission_list.html:1
9
1
#: terminal/templates/terminal/terminal_detail.html:16
#: terminal/templates/terminal/terminal_detail.html:16
#: terminal/templates/terminal/terminal_list.html:71
#: terminal/templates/terminal/terminal_list.html:71
#: users/templates/users/user_detail.html:25
#: users/templates/users/user_detail.html:25
...
@@ -709,7 +725,7 @@ msgstr "更新"
...
@@ -709,7 +725,7 @@ msgstr "更新"
#: assets/templates/assets/system_user_list.html:89
#: assets/templates/assets/system_user_list.html:89
#: ops/templates/ops/task_list.html:72
#: ops/templates/ops/task_list.html:72
#: perms/templates/perms/asset_permission_detail.html:34
#: perms/templates/perms/asset_permission_detail.html:34
#: perms/templates/perms/asset_permission_list.html:1
2
2
#: perms/templates/perms/asset_permission_list.html:1
9
2
#: terminal/templates/terminal/terminal_list.html:73
#: terminal/templates/terminal/terminal_list.html:73
#: users/templates/users/user_detail.html:30
#: users/templates/users/user_detail.html:30
#: users/templates/users/user_group_detail.html:32
#: users/templates/users/user_group_detail.html:32
...
@@ -723,7 +739,7 @@ msgstr "删除"
...
@@ -723,7 +739,7 @@ msgstr "删除"
#: assets/templates/assets/asset_create.html:16
#: assets/templates/assets/asset_create.html:16
#: assets/templates/assets/asset_update.html:21
#: assets/templates/assets/asset_update.html:21
#: assets/templates/assets/gateway_create_update.html:37
#: assets/templates/assets/gateway_create_update.html:37
#: perms/templates/perms/asset_permission_create_update.html:3
8
#: perms/templates/perms/asset_permission_create_update.html:3
3
msgid "Basic"
msgid "Basic"
msgstr "基本"
msgstr "基本"
...
@@ -745,7 +761,7 @@ msgstr "自动生成密钥"
...
@@ -745,7 +761,7 @@ msgstr "自动生成密钥"
#: assets/templates/assets/asset_create.html:59
#: assets/templates/assets/asset_create.html:59
#: assets/templates/assets/asset_update.html:63
#: assets/templates/assets/asset_update.html:63
#: assets/templates/assets/gateway_create_update.html:53
#: assets/templates/assets/gateway_create_update.html:53
#: perms/templates/perms/asset_permission_create_update.html:4
9
#: perms/templates/perms/asset_permission_create_update.html:4
5
#: terminal/templates/terminal/terminal_update.html:42
#: terminal/templates/terminal/terminal_update.html:42
msgid "Other"
msgid "Other"
msgstr "其它"
msgstr "其它"
...
@@ -762,7 +778,7 @@ msgstr "其它"
...
@@ -762,7 +778,7 @@ msgstr "其它"
#: common/templates/common/email_setting.html:59
#: common/templates/common/email_setting.html:59
#: common/templates/common/ldap_setting.html:59
#: common/templates/common/ldap_setting.html:59
#: common/templates/common/terminal_setting.html:101
#: common/templates/common/terminal_setting.html:101
#: perms/templates/perms/asset_permission_create_update.html:
71
#: perms/templates/perms/asset_permission_create_update.html:
69
#: terminal/templates/terminal/terminal_update.html:47
#: terminal/templates/terminal/terminal_update.html:47
#: users/templates/users/_user.html:43
#: users/templates/users/_user.html:43
#: users/templates/users/user_bulk_update.html:23
#: users/templates/users/user_bulk_update.html:23
...
@@ -802,7 +818,7 @@ msgstr "资产列表"
...
@@ -802,7 +818,7 @@ msgstr "资产列表"
#: assets/templates/assets/admin_user_assets.html:66
#: assets/templates/assets/admin_user_assets.html:66
#: assets/templates/assets/system_user_asset.html:64
#: assets/templates/assets/system_user_asset.html:64
#: assets/templates/assets/system_user_detail.html:112
#: assets/templates/assets/system_user_detail.html:112
#: perms/templates/perms/asset_permission_detail.html:11
0
#: perms/templates/perms/asset_permission_detail.html:11
4
msgid "Quick update"
msgid "Quick update"
msgstr "快速更新"
msgstr "快速更新"
...
@@ -822,9 +838,14 @@ msgstr "测试"
...
@@ -822,9 +838,14 @@ msgstr "测试"
msgid "Replace node assets admin user with this"
msgid "Replace node assets admin user with this"
msgstr "替换资产的管理员"
msgstr "替换资产的管理员"
#: assets/templates/assets/admin_user_detail.html:91
#: perms/templates/perms/asset_permission_asset.html:116
msgid "Select nodes"
msgstr "选择节点"
#: assets/templates/assets/admin_user_detail.html:100
#: assets/templates/assets/admin_user_detail.html:100
#: assets/templates/assets/asset_detail.html:200
#: assets/templates/assets/asset_detail.html:200
#: assets/templates/assets/asset_list.html:60
0
#: assets/templates/assets/asset_list.html:60
3
#: assets/templates/assets/system_user_detail.html:183
#: assets/templates/assets/system_user_detail.html:183
#: assets/templates/assets/system_user_list.html:138 templates/_modal.html:16
#: assets/templates/assets/system_user_list.html:138 templates/_modal.html:16
#: terminal/templates/terminal/session_detail.html:108
#: terminal/templates/terminal/session_detail.html:108
...
@@ -855,19 +876,6 @@ msgstr "不可达"
...
@@ -855,19 +876,6 @@ msgstr "不可达"
msgid "Ratio"
msgid "Ratio"
msgstr "比例"
msgstr "比例"
#: assets/templates/assets/asset_create.html:29
#: assets/templates/assets/asset_update.html:34 perms/models.py:74
#: perms/templates/perms/asset_permission_create_update.html:40
#: perms/templates/perms/asset_permission_list.html:67
msgid "Node"
msgstr "节点"
#: assets/templates/assets/asset_create.html:35
#: assets/templates/assets/asset_list.html:75
#: assets/templates/assets/asset_update.html:40
msgid "Label"
msgstr "标签"
#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:197
#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:197
msgid "Asset detail"
msgid "Asset detail"
msgstr "资产详情"
msgstr "资产详情"
...
@@ -949,15 +957,15 @@ msgstr "重命名节点"
...
@@ -949,15 +957,15 @@ msgstr "重命名节点"
msgid "Delete node"
msgid "Delete node"
msgstr "删除节点"
msgstr "删除节点"
#: assets/templates/assets/asset_list.html:20
3
#: assets/templates/assets/asset_list.html:20
2
msgid "Create node failed"
msgid "Create node failed"
msgstr "创建节点失败"
msgstr "创建节点失败"
#: assets/templates/assets/asset_list.html:21
6
#: assets/templates/assets/asset_list.html:21
5
msgid "Have child node, cancel"
msgid "Have child node, cancel"
msgstr "存在子节点,不能删除"
msgstr "存在子节点,不能删除"
#: assets/templates/assets/asset_list.html:59
5
#: assets/templates/assets/asset_list.html:59
8
#: assets/templates/assets/system_user_list.html:133
#: assets/templates/assets/system_user_list.html:133
#: users/templates/users/user_detail.html:334
#: users/templates/users/user_detail.html:334
#: users/templates/users/user_detail.html:359
#: users/templates/users/user_detail.html:359
...
@@ -966,20 +974,20 @@ msgstr "存在子节点,不能删除"
...
@@ -966,20 +974,20 @@ msgstr "存在子节点,不能删除"
msgid "Are you sure?"
msgid "Are you sure?"
msgstr "你确认吗?"
msgstr "你确认吗?"
#: assets/templates/assets/asset_list.html:59
6
#: assets/templates/assets/asset_list.html:59
9
msgid "This will delete the selected assets !!!"
msgid "This will delete the selected assets !!!"
msgstr "删除选择资产"
msgstr "删除选择资产"
#: assets/templates/assets/asset_list.html:60
4
#: assets/templates/assets/asset_list.html:60
7
msgid "Asset Deleted."
msgid "Asset Deleted."
msgstr "已被删除"
msgstr "已被删除"
#: assets/templates/assets/asset_list.html:60
5
#: assets/templates/assets/asset_list.html:60
8
#: assets/templates/assets/asset_list.html:61
0
#: assets/templates/assets/asset_list.html:61
3
msgid "Asset Delete"
msgid "Asset Delete"
msgstr "删除"
msgstr "删除"
#: assets/templates/assets/asset_list.html:6
09
#: assets/templates/assets/asset_list.html:6
12
msgid "Asset Deleting failed."
msgid "Asset Deleting failed."
msgstr "删除失败"
msgstr "删除失败"
...
@@ -1088,10 +1096,6 @@ msgstr "删除系统用户"
...
@@ -1088,10 +1096,6 @@ msgstr "删除系统用户"
msgid "System Users Deleting failed."
msgid "System Users Deleting failed."
msgstr "系统用户删除失败"
msgstr "系统用户删除失败"
#: assets/templates/assets/user_asset_list.html:24
msgid "Connective"
msgstr "连接性"
#: assets/views/admin_user.py:30
#: assets/views/admin_user.py:30
msgid "Admin user list"
msgid "Admin user list"
msgstr "管理用户列表"
msgstr "管理用户列表"
...
@@ -1120,7 +1124,7 @@ msgstr "批量更新资产"
...
@@ -1120,7 +1124,7 @@ msgstr "批量更新资产"
msgid "Update asset"
msgid "Update asset"
msgstr "更新资产"
msgstr "更新资产"
#: assets/views/asset.py:30
0
#: assets/views/asset.py:30
8
msgid "already exists"
msgid "already exists"
msgstr "已经存在"
msgstr "已经存在"
...
@@ -1182,18 +1186,33 @@ msgstr "远端地址"
...
@@ -1182,18 +1186,33 @@ msgstr "远端地址"
msgid "Operate"
msgid "Operate"
msgstr "操作"
msgstr "操作"
#: audits/models.py:14 audits/templates/audits/ftp_log_list.html:76
#: audits/models.py:14 audits/templates/audits/ftp_log_list.html:56
#: audits/templates/audits/ftp_log_list.html:76
msgid "Filename"
msgid "Filename"
msgstr "文件名"
msgstr "文件名"
#: audits/templates/audits/ftp_log_list.html:77
#: audits/models.py:15 audits/templates/audits/ftp_log_list.html:77
#: ops/templates/ops/task_list.html:39
msgid "Success"
msgstr "成功"
#: audits/templates/audits/ftp_log_list.html:78
#: ops/templates/ops/adhoc_history.html:52
#: ops/templates/ops/adhoc_history.html:52
#: ops/templates/ops/adhoc_history_detail.html:61
#: ops/templates/ops/adhoc_history_detail.html:61
#: ops/templates/ops/task_history.html:58 terminal/models.py:132
#: ops/templates/ops/task_history.html:58 perms/models.py:26
#: perms/templates/perms/asset_permission_detail.html:86 terminal/models.py:132
#: terminal/templates/terminal/session_list.html:77
#: terminal/templates/terminal/session_list.html:77
msgid "Date start"
msgid "Date start"
msgstr "开始日期"
msgstr "开始日期"
#: audits/views.py:50 templates/_nav.html:64
msgid "Audits"
msgstr "日志审计"
#: audits/views.py:51 templates/_nav.html:67
msgid "FTP log"
msgstr "FTP日志"
#: common/api.py:18
#: common/api.py:18
msgid "Test mail sent to {}, please check"
msgid "Test mail sent to {}, please check"
msgstr "邮件已经发送{}, 请检查"
msgstr "邮件已经发送{}, 请检查"
...
@@ -1655,10 +1674,6 @@ msgstr "搜索"
...
@@ -1655,10 +1674,6 @@ msgstr "搜索"
msgid "Versions"
msgid "Versions"
msgstr "版本"
msgstr "版本"
#: ops/templates/ops/task_list.html:39
msgid "Success"
msgstr "成功"
#: ops/templates/ops/task_list.html:40
#: ops/templates/ops/task_list.html:40
#: users/templates/users/login_log_list.html:54
#: users/templates/users/login_log_list.html:54
msgid "Date"
msgid "Date"
...
@@ -1685,24 +1700,37 @@ msgstr "任务列表"
...
@@ -1685,24 +1700,37 @@ msgstr "任务列表"
msgid "Task run history"
msgid "Task run history"
msgstr "执行历史"
msgstr "执行历史"
#: perms/forms.py:22 perms/models.py:16 perms/models.py:75
#: perms/forms.py:18 users/forms.py:176 users/forms.py:181 users/forms.py:193
#: perms/templates/perms/asset_permission_list.html:68 templates/_nav.html:14
#: users/forms.py:223
#: users/models/group.py:25 users/models/user.py:37
msgid "Select users"
msgstr "选择用户"
#: perms/forms.py:34 perms/models.py:21 perms/models.py:68
#: perms/templates/perms/asset_permission_list.html:55
#: perms/templates/perms/asset_permission_list.html:136 templates/_nav.html:14
#: users/models/group.py:25 users/models/user.py:42
#: users/templates/users/_select_user_modal.html:16
#: users/templates/users/_select_user_modal.html:16
#: users/templates/users/user_detail.html:179
#: users/templates/users/user_detail.html:179
#: users/templates/users/user_list.html:26
#: users/templates/users/user_list.html:26
msgid "User group"
msgid "User group"
msgstr "用户组"
msgstr "用户组"
#: perms/models.py:21 perms/models.py:78
#: perms/forms.py:56
#: perms/templates/perms/asset_permission_detail.html:86
msgid "User or group at least one required"
#: perms/templates/perms/asset_permission_list.html:71 users/models/user.py:49
msgstr ""
#: users/templates/users/user_detail.html:95
#: perms/forms.py:65
msgid "Asset or group at least one required"
msgstr ""
#: perms/models.py:27 perms/models.py:71
#: perms/templates/perms/asset_permission_detail.html:90
#: users/models/user.py:54 users/templates/users/user_detail.html:95
#: users/templates/users/user_profile.html:96
#: users/templates/users/user_profile.html:96
msgid "Date expired"
msgid "Date expired"
msgstr "失效日期"
msgstr "失效日期"
#: perms/models.py:8
8
templates/_nav.html:34
#: perms/models.py:8
1
templates/_nav.html:34
msgid "Asset permission"
msgid "Asset permission"
msgstr "资产授权"
msgstr "资产授权"
...
@@ -1723,7 +1751,7 @@ msgid "Add asset to this permission"
...
@@ -1723,7 +1751,7 @@ msgid "Add asset to this permission"
msgstr "添加资产"
msgstr "添加资产"
#: perms/templates/perms/asset_permission_asset.html:97
#: perms/templates/perms/asset_permission_asset.html:97
#: perms/templates/perms/asset_permission_detail.html:15
3
#: perms/templates/perms/asset_permission_detail.html:15
7
#: perms/templates/perms/asset_permission_user.html:97
#: perms/templates/perms/asset_permission_user.html:97
#: perms/templates/perms/asset_permission_user.html:125
#: perms/templates/perms/asset_permission_user.html:125
#: users/templates/users/user_group_detail.html:95
#: users/templates/users/user_group_detail.html:95
...
@@ -1731,12 +1759,8 @@ msgid "Add"
...
@@ -1731,12 +1759,8 @@ msgid "Add"
msgstr "添加"
msgstr "添加"
#: perms/templates/perms/asset_permission_asset.html:108
#: perms/templates/perms/asset_permission_asset.html:108
msgid "Add asset group to this permission"
msgid "Add node to this permission"
msgstr "添加资产组"
msgstr "添加节点"
#: perms/templates/perms/asset_permission_asset.html:116 users/forms.py:275
msgid "Select asset groups"
msgstr "选择资产组"
#: perms/templates/perms/asset_permission_asset.html:125
#: perms/templates/perms/asset_permission_asset.html:125
#: users/templates/users/user_detail.html:196
#: users/templates/users/user_detail.html:196
...
@@ -1756,18 +1780,18 @@ msgid "Asset count"
...
@@ -1756,18 +1780,18 @@ msgid "Asset count"
msgstr "资产数量"
msgstr "资产数量"
#: perms/templates/perms/asset_permission_detail.html:78
#: perms/templates/perms/asset_permission_detail.html:78
msgid "
Asset group
count"
msgid "
Node
count"
msgstr "
资产组
数量"
msgstr "
节点
数量"
#: perms/templates/perms/asset_permission_detail.html:82
#: perms/templates/perms/asset_permission_detail.html:82
msgid "System user count"
msgid "System user count"
msgstr "系统用户数量"
msgstr "系统用户数量"
#: perms/templates/perms/asset_permission_detail.html:14
4 users/forms.py:27
8
#: perms/templates/perms/asset_permission_detail.html:148
msgid "Select system users"
msgid "Select system users"
msgstr "选择系统用户"
msgstr "选择系统用户"
#: perms/templates/perms/asset_permission_list.html:
58
#: perms/templates/perms/asset_permission_list.html:
46
msgid "Create permission"
msgid "Create permission"
msgstr "创建授权规则"
msgstr "创建授权规则"
...
@@ -1792,22 +1816,31 @@ msgstr "添加用户组"
...
@@ -1792,22 +1816,31 @@ msgstr "添加用户组"
msgid "Select user groups"
msgid "Select user groups"
msgstr "选择用户组"
msgstr "选择用户组"
#: perms/views.py:23 perms/views.py:47 perms/views.py:67 templates/_nav.html:31
#: perms/views.py:25 perms/views.py:55 perms/views.py:70 perms/views.py:85
#: perms/views.py:120 perms/views.py:151 templates/_nav.html:31
msgid "Perms"
msgid "Perms"
msgstr "权限管理"
msgstr "权限管理"
#: perms/views.py:2
4
#: perms/views.py:2
6
msgid "Asset permission list"
msgid "Asset permission list"
msgstr "资产授权列表"
msgstr "资产授权列表"
#: perms/views.py:
48
#: perms/views.py:
56
msgid "Create asset permission"
msgid "Create asset permission"
msgstr "创建权限规则"
msgstr "创建权限规则"
#: perms/views.py:
68
#: perms/views.py:
71 perms/views.py:86
msgid "Update asset permission"
msgid "Update asset permission"
msgstr "更新资产授权"
msgstr "更新资产授权"
#: perms/views.py:121
msgid "Asset permission user list"
msgstr "资产授权用户列表"
#: perms/views.py:152
msgid "Asset permission asset list"
msgstr "资产授权资产列表"
#: templates/_header_bar.html:18
#: templates/_header_bar.html:18
msgid "Supports"
msgid "Supports"
msgstr "商业支持"
msgstr "商业支持"
...
@@ -1816,13 +1849,13 @@ msgstr "商业支持"
...
@@ -1816,13 +1849,13 @@ msgstr "商业支持"
msgid "Docs"
msgid "Docs"
msgstr "文档"
msgstr "文档"
#: templates/_header_bar.html:37 templates/_nav_user.html:9 users/forms.py:9
4
#: templates/_header_bar.html:37 templates/_nav_user.html:9 users/forms.py:9
3
#: users/templates/users/_user.html:36
#: users/templates/users/_user.html:36
#: users/templates/users/user_password_update.html:37
#: users/templates/users/user_password_update.html:37
#: users/templates/users/user_profile.html:17
#: users/templates/users/user_profile.html:17
#: users/templates/users/user_profile_update.html:37
#: users/templates/users/user_profile_update.html:37
#: users/templates/users/user_profile_update.html:57
#: users/templates/users/user_profile_update.html:57
#: users/templates/users/user_pubkey_update.html:37 users/views/user.py:31
7
#: users/templates/users/user_pubkey_update.html:37 users/views/user.py:31
8
msgid "Profile"
msgid "Profile"
msgstr "个人信息"
msgstr "个人信息"
...
@@ -1879,9 +1912,9 @@ msgstr "关闭"
...
@@ -1879,9 +1912,9 @@ msgstr "关闭"
#: templates/_nav.html:10 users/views/group.py:28 users/views/group.py:44
#: templates/_nav.html:10 users/views/group.py:28 users/views/group.py:44
#: users/views/group.py:62 users/views/group.py:79 users/views/group.py:95
#: users/views/group.py:62 users/views/group.py:79 users/views/group.py:95
#: users/views/login.py:20
9 users/views/login.py:258
users/views/user.py:60
#: users/views/login.py:20
5 users/views/login.py:254
users/views/user.py:60
#: users/views/user.py:75 users/views/user.py:9
4 users/views/user.py:150
#: users/views/user.py:75 users/views/user.py:9
5 users/views/user.py:151
#: users/views/user.py:30
5 users/views/user.py:352 users/views/user.py:374
#: users/views/user.py:30
6 users/views/user.py:353 users/views/user.py:375
msgid "Users"
msgid "Users"
msgstr "用户管理"
msgstr "用户管理"
...
@@ -1925,14 +1958,6 @@ msgstr "终端管理"
...
@@ -1925,14 +1958,6 @@ msgstr "终端管理"
msgid "Job Center"
msgid "Job Center"
msgstr "作业中心"
msgstr "作业中心"
#: templates/_nav.html:64
msgid "Audits"
msgstr "日志审计"
#: templates/_nav.html:67
msgid "FTP log"
msgstr "FTP日志"
#: templates/captcha/image.html:3
#: templates/captcha/image.html:3
msgid "Play CAPTCHA as audio file"
msgid "Play CAPTCHA as audio file"
msgstr "语言播放验证码"
msgstr "语言播放验证码"
...
@@ -2199,7 +2224,7 @@ msgstr ""
...
@@ -2199,7 +2224,7 @@ msgstr ""
msgid "Invalid token or cache refreshed."
msgid "Invalid token or cache refreshed."
msgstr ""
msgstr ""
#: users/forms.py:2
8 users/models/user.py:38
#: users/forms.py:2
7 users/models/user.py:43
#: users/templates/users/_select_user_modal.html:15
#: users/templates/users/_select_user_modal.html:15
#: users/templates/users/user_detail.html:87
#: users/templates/users/user_detail.html:87
#: users/templates/users/user_list.html:25
#: users/templates/users/user_list.html:25
...
@@ -2207,55 +2232,55 @@ msgstr ""
...
@@ -2207,55 +2232,55 @@ msgstr ""
msgid "Role"
msgid "Role"
msgstr "角色"
msgstr "角色"
#: users/forms.py:
30 users/forms.py:140
#: users/forms.py:
29 users/forms.py:139
msgid "ssh public key"
msgid "ssh public key"
msgstr "ssh公钥"
msgstr "ssh公钥"
#: users/forms.py:3
1 users/forms.py:141
#: users/forms.py:3
0 users/forms.py:140
msgid "ssh-rsa AAAA..."
msgid "ssh-rsa AAAA..."
msgstr ""
msgstr ""
#: users/forms.py:3
2
#: users/forms.py:3
1
msgid "Paste user id_rsa.pub here."
msgid "Paste user id_rsa.pub here."
msgstr "复制用户公钥到这里"
msgstr "复制用户公钥到这里"
#: users/forms.py:
50
users/templates/users/user_detail.html:187
#: users/forms.py:
49
users/templates/users/user_detail.html:187
msgid "Join user groups"
msgid "Join user groups"
msgstr "添加到用户组"
msgstr "添加到用户组"
#: users/forms.py:
60 users/forms.py:155
#: users/forms.py:
59 users/forms.py:154
msgid "Public key should not be the same as your old one."
msgid "Public key should not be the same as your old one."
msgstr "不能和原来的密钥相同"
msgstr "不能和原来的密钥相同"
#: users/forms.py:6
4 users/forms.py:159
users/serializers.py:42
#: users/forms.py:6
3 users/forms.py:158
users/serializers.py:42
msgid "Not a valid ssh public key"
msgid "Not a valid ssh public key"
msgstr "ssh密钥不合法"
msgstr "ssh密钥不合法"
#: users/forms.py:
100
#: users/forms.py:
99
msgid "Old password"
msgid "Old password"
msgstr "原来密码"
msgstr "原来密码"
#: users/forms.py:10
5
#: users/forms.py:10
4
msgid "New password"
msgid "New password"
msgstr "新密码"
msgstr "新密码"
#: users/forms.py:1
10
#: users/forms.py:1
09
msgid "Confirm password"
msgid "Confirm password"
msgstr "确认密码"
msgstr "确认密码"
#: users/forms.py:1
20
#: users/forms.py:1
19
msgid "Old password error"
msgid "Old password error"
msgstr "原来密码错误"
msgstr "原来密码错误"
#: users/forms.py:12
8
#: users/forms.py:12
7
msgid "Password does not match"
msgid "Password does not match"
msgstr "密码不一致"
msgstr "密码不一致"
#: users/forms.py:14
2
#: users/forms.py:14
1
msgid "Paste your id_rsa.pub here."
msgid "Paste your id_rsa.pub here."
msgstr "复制你的公钥到这里"
msgstr "复制你的公钥到这里"
#: users/forms.py:1
70 users/models/user.py:46
#: users/forms.py:1
69 users/models/user.py:51
#: users/templates/users/user_password_update.html:43
#: users/templates/users/user_password_update.html:43
#: users/templates/users/user_profile.html:71
#: users/templates/users/user_profile.html:71
#: users/templates/users/user_profile_update.html:43
#: users/templates/users/user_profile_update.html:43
...
@@ -2263,10 +2288,6 @@ msgstr "复制你的公钥到这里"
...
@@ -2263,10 +2288,6 @@ msgstr "复制你的公钥到这里"
msgid "Public key"
msgid "Public key"
msgstr "ssh公钥"
msgstr "ssh公钥"
#: users/forms.py:177 users/forms.py:182 users/forms.py:194 users/forms.py:224
msgid "Select users"
msgstr "选择用户"
#: users/models/authentication.py:36
#: users/models/authentication.py:36
msgid "Private Token"
msgid "Private Token"
msgstr "ssh密钥"
msgstr "ssh密钥"
...
@@ -2291,7 +2312,7 @@ msgstr "Agent"
...
@@ -2291,7 +2312,7 @@ msgstr "Agent"
msgid "Date login"
msgid "Date login"
msgstr "登录日期"
msgstr "登录日期"
#: users/models/user.py:29 users/models/user.py:2
62
#: users/models/user.py:29 users/models/user.py:2
81
msgid "Administrator"
msgid "Administrator"
msgstr "管理员"
msgstr "管理员"
...
@@ -2299,24 +2320,36 @@ msgstr "管理员"
...
@@ -2299,24 +2320,36 @@ msgstr "管理员"
msgid "Application"
msgid "Application"
msgstr "应用程序"
msgstr "应用程序"
#: users/models/user.py:36 users/templates/users/user_detail.html:71
#: users/models/user.py:34
msgid "Disable"
msgstr "禁用"
#: users/models/user.py:35
msgid "Enable"
msgstr "启用"
#: users/models/user.py:36
msgid "Force enable"
msgstr "强制启用"
#: users/models/user.py:41 users/templates/users/user_detail.html:71
#: users/templates/users/user_profile.html:59
#: users/templates/users/user_profile.html:59
msgid "Email"
msgid "Email"
msgstr "邮件"
msgstr "邮件"
#: users/models/user.py:
39
#: users/models/user.py:
44
msgid "Avatar"
msgid "Avatar"
msgstr "头像"
msgstr "头像"
#: users/models/user.py:4
0
users/templates/users/user_detail.html:82
#: users/models/user.py:4
5
users/templates/users/user_detail.html:82
msgid "Wechat"
msgid "Wechat"
msgstr "微信"
msgstr "微信"
#: users/models/user.py:4
2
#: users/models/user.py:4
7
msgid "Enable OTP"
msgid "Enable OTP"
msgstr "二次验证"
msgstr "二次验证"
#: users/models/user.py:2
65
#: users/models/user.py:2
84
msgid "Administrator is the super user of system"
msgid "Administrator is the super user of system"
msgstr "Administrator是初始的超级管理员"
msgstr "Administrator是初始的超级管理员"
...
@@ -2431,7 +2464,7 @@ msgid "Reset link will be generated and sent to the user. "
...
@@ -2431,7 +2464,7 @@ msgid "Reset link will be generated and sent to the user. "
msgstr "生成重置密码连接,通过邮件发送给用户"
msgstr "生成重置密码连接,通过邮件发送给用户"
#: users/templates/users/user_detail.html:19
#: users/templates/users/user_detail.html:19
#: users/templates/users/user_granted_asset.html:18 users/views/user.py:15
1
#: users/templates/users/user_granted_asset.html:18 users/views/user.py:15
2
msgid "User detail"
msgid "User detail"
msgstr "用户详情"
msgstr "用户详情"
...
@@ -2550,8 +2583,8 @@ msgstr "用户删除失败"
...
@@ -2550,8 +2583,8 @@ msgstr "用户删除失败"
msgid "OTP"
msgid "OTP"
msgstr ""
msgstr ""
#: users/templates/users/user_profile.html:100 users/views/user.py:18
0
#: users/templates/users/user_profile.html:100 users/views/user.py:18
1
#: users/views/user.py:23
4
#: users/views/user.py:23
5
msgid "User groups"
msgid "User groups"
msgstr "用户组"
msgstr "用户组"
...
@@ -2587,7 +2620,7 @@ msgstr "更新密钥"
...
@@ -2587,7 +2620,7 @@ msgstr "更新密钥"
msgid "Or reset by server"
msgid "Or reset by server"
msgstr "或者重置并下载密钥"
msgstr "或者重置并下载密钥"
#: users/templates/users/user_update.html:4 users/views/user.py:9
4
#: users/templates/users/user_update.html:4 users/views/user.py:9
5
msgid "Update user"
msgid "Update user"
msgstr "更新用户"
msgstr "更新用户"
...
@@ -2733,78 +2766,76 @@ msgstr "更新用户组"
...
@@ -2733,78 +2766,76 @@ msgstr "更新用户组"
msgid "User group granted asset"
msgid "User group granted asset"
msgstr "用户组授权资产"
msgstr "用户组授权资产"
#: users/views/login.py:5
7
#: users/views/login.py:5
5
msgid "Please enable cookies and try again."
msgid "Please enable cookies and try again."
msgstr "设置你的浏览器支持cookie"
msgstr "设置你的浏览器支持cookie"
#: users/views/login.py:9
9
#: users/views/login.py:9
7
msgid "Logout success"
msgid "Logout success"
msgstr "退出登录成功"
msgstr "退出登录成功"
#: users/views/login.py:
100
#: users/views/login.py:
98
msgid "Logout success, return login page"
msgid "Logout success, return login page"
msgstr "退出登录成功,返回到登录页面"
msgstr "退出登录成功,返回到登录页面"
#: users/views/login.py:11
6
#: users/views/login.py:11
4
msgid "Email address invalid, please input again"
msgid "Email address invalid, please input again"
msgstr "邮箱地址错误,重新输入"
msgstr "邮箱地址错误,重新输入"
#: users/views/login.py:12
9
#: users/views/login.py:12
7
msgid "Send reset password message"
msgid "Send reset password message"
msgstr "发送重置密码邮件"
msgstr "发送重置密码邮件"
#: users/views/login.py:1
30
#: users/views/login.py:1
28
msgid "Send reset password mail success, login your mail box and follow it "
msgid "Send reset password mail success, login your mail box and follow it "
msgstr ""
msgstr ""
"发送重置邮件成功, 请登录邮箱查看, 按照提示操作 (如果没收到,请等待3-5分钟)"
"发送重置邮件成功, 请登录邮箱查看, 按照提示操作 (如果没收到,请等待3-5分钟)"
#: users/views/login.py:14
4
#: users/views/login.py:14
2
msgid "Reset password success"
msgid "Reset password success"
msgstr "重置密码成功"
msgstr "重置密码成功"
#: users/views/login.py:14
5
#: users/views/login.py:14
3
msgid "Reset password success, return to login page"
msgid "Reset password success, return to login page"
msgstr "重置密码成功,返回到登录页面"
msgstr "重置密码成功,返回到登录页面"
#: users/views/login.py:16
2 users/views/login.py:175
#: users/views/login.py:16
0 users/views/login.py:173
msgid "Token invalid or expired"
msgid "Token invalid or expired"
msgstr "Token错误或失效"
msgstr "Token错误或失效"
#: users/views/login.py:1
71
#: users/views/login.py:1
69
msgid "Password not same"
msgid "Password not same"
msgstr "密码不一致"
msgstr "密码不一致"
#: users/views/login.py:20
9
#: users/views/login.py:20
5
msgid "First login"
msgid "First login"
msgstr "首次登陆"
msgstr "首次登陆"
#: users/views/login.py:25
9
#: users/views/login.py:25
5
msgid "Login log list"
msgid "Login log list"
msgstr "登录日志"
msgstr "登录日志"
#: users/views/user.py:10
4
#: users/views/user.py:10
5
msgid "Bulk update user success"
msgid "Bulk update user success"
msgstr "批量更新用户成功"
msgstr "批量更新用户成功"
#: users/views/user.py:2
09
#: users/views/user.py:2
10
msgid "Invalid file."
msgid "Invalid file."
msgstr "文件不合法"
msgstr "文件不合法"
#: users/views/user.py:30
6
#: users/views/user.py:30
7
msgid "User granted assets"
msgid "User granted assets"
msgstr "用户授权资产"
msgstr "用户授权资产"
#: users/views/user.py:33
5
#: users/views/user.py:33
6
msgid "Profile setting"
msgid "Profile setting"
msgstr "个人信息设置"
msgstr "个人信息设置"
#: users/views/user.py:35
3
#: users/views/user.py:35
4
msgid "Password update"
msgid "Password update"
msgstr "密码更新"
msgstr "密码更新"
#: users/views/user.py:37
5
#: users/views/user.py:37
6
msgid "Public key update"
msgid "Public key update"
msgstr "密钥更新"
msgstr "密钥更新"
#~ msgid "Task has been send, seen left asset status"
#~ msgstr "任务已下发,查看左侧资产状态"
apps/perms/api.py
View file @
8b3b517b
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
from
django.shortcuts
import
get_object_or_404
from
django.shortcuts
import
get_object_or_404
from
rest_framework.views
import
APIView
,
Response
from
rest_framework.views
import
APIView
,
Response
from
rest_framework.generics
import
ListAPIView
,
get_object_or_404
from
rest_framework.generics
import
ListAPIView
,
get_object_or_404
,
RetrieveUpdateAPIView
from
rest_framework
import
viewsets
from
rest_framework
import
viewsets
from
common.utils
import
set_or_append_attr_bulk
from
common.utils
import
set_or_append_attr_bulk
...
@@ -246,3 +246,77 @@ class ValidateUserAssetPermissionView(APIView):
...
@@ -246,3 +246,77 @@ class ValidateUserAssetPermissionView(APIView):
return
Response
({
'msg'
:
True
},
status
=
200
)
return
Response
({
'msg'
:
True
},
status
=
200
)
else
:
else
:
return
Response
({
'msg'
:
False
},
status
=
403
)
return
Response
({
'msg'
:
False
},
status
=
403
)
class
AssetPermissionRemoveUserApi
(
RetrieveUpdateAPIView
):
"""
将用户从授权中移除,Detail页面会调用
"""
permission_classes
=
(
IsSuperUser
,)
serializer_class
=
serializers
.
AssetPermissionUpdateUserSerializer
queryset
=
AssetPermission
.
objects
.
all
()
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
perm
=
self
.
get_object
()
serializer
=
self
.
serializer_class
(
data
=
request
.
data
)
if
serializer
.
is_valid
():
users
=
serializer
.
validated_data
.
get
(
'users'
)
if
users
:
perm
.
users
.
remove
(
*
tuple
(
users
))
return
Response
({
"msg"
:
"ok"
})
else
:
return
Response
({
"error"
:
serializer
.
errors
})
class
AssetPermissionAddUserApi
(
RetrieveUpdateAPIView
):
permission_classes
=
(
IsSuperUser
,)
serializer_class
=
serializers
.
AssetPermissionUpdateUserSerializer
queryset
=
AssetPermission
.
objects
.
all
()
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
perm
=
self
.
get_object
()
serializer
=
self
.
serializer_class
(
data
=
request
.
data
)
if
serializer
.
is_valid
():
users
=
serializer
.
validated_data
.
get
(
'users'
)
if
users
:
perm
.
users
.
add
(
*
tuple
(
users
))
return
Response
({
"msg"
:
"ok"
})
else
:
return
Response
({
"error"
:
serializer
.
errors
})
class
AssetPermissionRemoveAssetApi
(
RetrieveUpdateAPIView
):
"""
将用户从授权中移除,Detail页面会调用
"""
permission_classes
=
(
IsSuperUser
,)
serializer_class
=
serializers
.
AssetPermissionUpdateAssetSerializer
queryset
=
AssetPermission
.
objects
.
all
()
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
perm
=
self
.
get_object
()
serializer
=
self
.
serializer_class
(
data
=
request
.
data
)
if
serializer
.
is_valid
():
assets
=
serializer
.
validated_data
.
get
(
'assets'
)
if
assets
:
perm
.
assets
.
remove
(
*
tuple
(
assets
))
return
Response
({
"msg"
:
"ok"
})
else
:
return
Response
({
"error"
:
serializer
.
errors
})
class
AssetPermissionAddAssetApi
(
RetrieveUpdateAPIView
):
permission_classes
=
(
IsSuperUser
,)
serializer_class
=
serializers
.
AssetPermissionUpdateAssetSerializer
queryset
=
AssetPermission
.
objects
.
all
()
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
perm
=
self
.
get_object
()
serializer
=
self
.
serializer_class
(
data
=
request
.
data
)
if
serializer
.
is_valid
():
assets
=
serializer
.
validated_data
.
get
(
'assets'
)
if
assets
:
perm
.
assets
.
add
(
*
tuple
(
assets
))
return
Response
({
"msg"
:
"ok"
})
else
:
return
Response
({
"error"
:
serializer
.
errors
})
apps/perms/forms.py
View file @
8b3b517b
...
@@ -4,10 +4,23 @@ from __future__ import absolute_import, unicode_literals
...
@@ -4,10 +4,23 @@ from __future__ import absolute_import, unicode_literals
from
django
import
forms
from
django
import
forms
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.utils.translation
import
ugettext_lazy
as
_
from
.hands
import
User
from
.models
import
AssetPermission
from
.models
import
AssetPermission
class
AssetPermissionForm
(
forms
.
ModelForm
):
class
AssetPermissionForm
(
forms
.
ModelForm
):
users
=
forms
.
ModelMultipleChoiceField
(
queryset
=
User
.
objects
.
exclude
(
role
=
User
.
ROLE_APP
),
label
=
_
(
"User"
),
widget
=
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select users'
)
}
),
required
=
False
,
)
class
Meta
:
class
Meta
:
model
=
AssetPermission
model
=
AssetPermission
exclude
=
(
exclude
=
(
...
...
apps/perms/models.py
View file @
8b3b517b
...
@@ -4,7 +4,7 @@ from django.db import models
...
@@ -4,7 +4,7 @@ from django.db import models
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.utils
import
timezone
from
django.utils
import
timezone
from
common.utils
import
date_expired_default
from
common.utils
import
date_expired_default
,
set_or_append_attr_bulk
class
ValidManager
(
models
.
Manager
):
class
ValidManager
(
models
.
Manager
):
...
@@ -45,6 +45,22 @@ class AssetPermission(models.Model):
...
@@ -45,6 +45,22 @@ class AssetPermission(models.Model):
return
True
return
True
return
False
return
False
def
get_all_users
(
self
):
users
=
set
(
self
.
users
.
all
())
for
group
in
self
.
user_groups
.
all
():
_users
=
group
.
users
.
all
()
set_or_append_attr_bulk
(
_users
,
'inherit'
,
group
.
name
)
users
.
update
(
set
(
_users
))
return
users
def
get_all_assets
(
self
):
assets
=
set
(
self
.
assets
.
all
())
for
node
in
self
.
nodes
.
all
():
_assets
=
node
.
get_all_assets
()
set_or_append_attr_bulk
(
_assets
,
'inherit'
,
node
.
value
)
assets
.
update
(
set
(
_assets
))
return
assets
class
NodePermission
(
models
.
Model
):
class
NodePermission
(
models
.
Model
):
id
=
models
.
UUIDField
(
default
=
uuid
.
uuid4
,
primary_key
=
True
)
id
=
models
.
UUIDField
(
default
=
uuid
.
uuid4
,
primary_key
=
True
)
...
...
apps/perms/templates/perms/asset_permission_asset.html
View file @
8b3b517b
...
@@ -57,12 +57,12 @@
...
@@ -57,12 +57,12 @@
</tr>
</tr>
</thead>
</thead>
<tbody>
<tbody>
{% for asset in
page_obj
%}
{% for asset in
object_list
%}
<tr>
<tr>
<td>
{{ asset.hostname }}
</td>
<td>
{{ asset.hostname }}
</td>
<td>
{{ asset.ip }}
</td>
<td>
{{ asset.ip }}
</td>
<td>
<td>
<button
title=
"{{ asset.inherit
_from_asset_groups }}"
data-gid=
"{{ asset.id }}"
class=
"btn btn-danger btn-xs btn-remove-asset {% if asset.is_inherit_from_asset_groups
%} disabled {% endif %}"
type=
"button"
style=
"float: right;"
><i
class=
"fa fa-minus"
></i></button>
<button
title=
"{{ asset.inherit
}}"
data-gid=
"{{ asset.id }}"
class=
"btn btn-danger btn-xs btn-remove-asset {% if asset.inherit
%} disabled {% endif %}"
type=
"button"
style=
"float: right;"
><i
class=
"fa fa-minus"
></i></button>
</td>
</td>
</tr>
</tr>
{% endfor %}
{% endfor %}
...
@@ -105,7 +105,7 @@
...
@@ -105,7 +105,7 @@
<div
class=
"panel panel-info"
>
<div
class=
"panel panel-info"
>
<div
class=
"panel-heading"
>
<div
class=
"panel-heading"
>
<i
class=
"fa fa-info-circle"
></i>
{% trans 'Add
asset group
to this permission' %}
<i
class=
"fa fa-info-circle"
></i>
{% trans 'Add
node
to this permission' %}
</div>
</div>
<div
class=
"panel-body"
>
<div
class=
"panel-body"
>
<table
class=
"table group_edit"
>
<table
class=
"table group_edit"
>
...
@@ -113,25 +113,25 @@
...
@@ -113,25 +113,25 @@
<form>
<form>
<tr>
<tr>
<td
colspan=
"2"
class=
"no-borders"
>
<td
colspan=
"2"
class=
"no-borders"
>
<select
data-placeholder=
"{% trans 'Select
asset group
s' %}"
class=
"select2 group"
style=
"width: 100%"
multiple=
""
tabindex=
"4"
>
<select
data-placeholder=
"{% trans 'Select
node
s' %}"
class=
"select2 group"
style=
"width: 100%"
multiple=
""
tabindex=
"4"
>
{% for
asset_group in asset_group
s_remain %}
{% for
node in node
s_remain %}
<option
value=
"{{
asset_group.id }}"
id=
"opt_{{ asset_group.id }}"
>
{{ asset_group.nam
e }}
</option>
<option
value=
"{{
node.id }}"
id=
"opt_{{ node.id }}"
>
{{ node.valu
e }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</td>
</td>
</tr>
</tr>
<tr>
<tr>
<td
colspan=
"2"
class=
"no-borders"
>
<td
colspan=
"2"
class=
"no-borders"
>
<button
type=
"button"
class=
"btn btn-info btn-sm"
id=
"btn-add-
group
"
>
{% trans 'Join' %}
</button>
<button
type=
"button"
class=
"btn btn-info btn-sm"
id=
"btn-add-
node
"
>
{% trans 'Join' %}
</button>
</td>
</td>
</tr>
</tr>
</form>
</form>
{% for
asset_group in asset_groups
%}
{% for
node in asset_permission.nodes.all
%}
<tr>
<tr>
<td
><b
class=
"bdg_user_group"
data-gid=
{{
asset_group
.
id
}}
>
{{ asset_group.nam
e }}
</b></td>
<td
><b
class=
"bdg_user_group"
data-gid=
{{
node
.
id
}}
>
{{ node.valu
e }}
</b></td>
<td>
<td>
<button
class=
"btn btn-danger btn-xs btn-remove-
group
"
type=
"button"
style=
"float: right;"
><i
class=
"fa fa-minus"
></i></button>
<button
class=
"btn btn-danger btn-xs btn-remove-
node
"
type=
"button"
style=
"float: right;"
><i
class=
"fa fa-minus"
></i></button>
</td>
</td>
</tr>
</tr>
{% endfor %}
{% endfor %}
...
@@ -179,10 +179,10 @@ function removeAssets(assets) {
...
@@ -179,10 +179,10 @@ function removeAssets(assets) {
});
});
}
}
function
update
Group
(
group
s
)
{
function
update
Nodes
(
node
s
)
{
var
the_url
=
"{% url 'api-perms:asset-permission-detail' pk=asset_permission.id %}"
;
var
the_url
=
"{% url 'api-perms:asset-permission-detail' pk=asset_permission.id %}"
;
var
body
=
{
var
body
=
{
asset_groups
:
group
s
nodes
:
node
s
};
};
APIUpdateAttr
({
APIUpdateAttr
({
url
:
the_url
,
url
:
the_url
,
...
@@ -231,17 +231,17 @@ $(document).ready(function () {
...
@@ -231,17 +231,17 @@ $(document).ready(function () {
var
assets
=
[
asset_id
];
var
assets
=
[
asset_id
];
removeAssets
(
assets
)
removeAssets
(
assets
)
})
})
.
on
(
'click'
,
'#btn-add-
group
'
,
function
()
{
.
on
(
'click'
,
'#btn-add-
node
'
,
function
()
{
if
(
Object
.
keys
(
jumpserver
.
nodes_selected
).
length
===
0
)
{
if
(
Object
.
keys
(
jumpserver
.
nodes_selected
).
length
===
0
)
{
return
false
;
return
false
;
}
}
var
group
s
=
$
(
'.bdg_group'
).
map
(
function
()
{
var
node
s
=
$
(
'.bdg_group'
).
map
(
function
()
{
return
$
(
this
).
data
(
'gid'
);
return
$
(
this
).
data
(
'gid'
);
}).
get
();
}).
get
();
$
.
map
(
jumpserver
.
nodes_selected
,
function
(
group_name
,
index
)
{
$
.
map
(
jumpserver
.
nodes_selected
,
function
(
group_name
,
index
)
{
group
s
.
push
(
index
);
node
s
.
push
(
index
);
$
(
'#opt_'
+
index
).
remove
();
$
(
'#opt_'
+
index
).
remove
();
$
(
'.group_edit tbody'
).
append
(
$
(
'.group_edit tbody'
).
append
(
'<tr>'
+
'<tr>'
+
...
@@ -251,17 +251,17 @@ $(document).ready(function () {
...
@@ -251,17 +251,17 @@ $(document).ready(function () {
)
)
});
});
update
Group
(
group
s
);
update
Nodes
(
node
s
);
})
})
.
on
(
'click'
,
'.btn-remove-
group
'
,
function
()
{
.
on
(
'click'
,
'.btn-remove-
node
'
,
function
()
{
var
$this
=
$
(
this
);
var
$this
=
$
(
this
);
var
$tr
=
$this
.
closest
(
'tr'
);
var
$tr
=
$this
.
closest
(
'tr'
);
var
group
s
=
$
(
'.bdg_group'
).
map
(
function
()
{
var
node
s
=
$
(
'.bdg_group'
).
map
(
function
()
{
if
(
$
(
this
).
data
(
'gid'
)
!==
$this
.
data
(
'gid'
)){
if
(
$
(
this
).
data
(
'gid'
)
!==
$this
.
data
(
'gid'
)){
return
$
(
this
).
data
(
'gid'
);
return
$
(
this
).
data
(
'gid'
);
}
}
}).
get
();
}).
get
();
update
Group
(
group
s
);
update
Nodes
(
node
s
);
$tr
.
remove
()
$tr
.
remove
()
})
})
</script>
</script>
...
...
apps/perms/templates/perms/asset_permission_detail.html
View file @
8b3b517b
...
@@ -15,19 +15,19 @@
...
@@ -15,19 +15,19 @@
<div
class=
"panel-options"
>
<div
class=
"panel-options"
>
<ul
class=
"nav nav-tabs"
>
<ul
class=
"nav nav-tabs"
>
<li
class=
"active"
>
<li
class=
"active"
>
<a
href=
"{% url 'perms:asset-permission-detail' pk=
asset_permission
.id %}"
class=
"text-center"
><i
class=
"fa fa-laptop"
></i>
{% trans 'Detail' %}
</a>
<a
href=
"{% url 'perms:asset-permission-detail' pk=
object
.id %}"
class=
"text-center"
><i
class=
"fa fa-laptop"
></i>
{% trans 'Detail' %}
</a>
</li>
</li>
<li>
<li>
<a
href=
"{% url 'perms:asset-permission-user-list' pk=
asset_permission
.id %}"
class=
"text-center"
>
<a
href=
"{% url 'perms:asset-permission-user-list' pk=
object
.id %}"
class=
"text-center"
>
<i
class=
"fa fa-bar-chart-o"
></i>
{% trans 'Users and user groups' %}
<i
class=
"fa fa-bar-chart-o"
></i>
{% trans 'Users and user groups' %}
</a>
</a>
</li>
</li>
<li>
<li>
<a
href=
"{% url 'perms:asset-permission-asset-list' pk=
asset_permission.id
%}"
class=
"text-center"
>
<a
href=
"{% url 'perms:asset-permission-asset-list' pk=
object.id
%}"
class=
"text-center"
>
<i
class=
"fa fa-bar-chart-o"
></i>
{% trans 'Assets and asset groups' %}
</a>
<i
class=
"fa fa-bar-chart-o"
></i>
{% trans 'Assets and asset groups' %}
</a>
</li>
</li>
<li
class=
"pull-right"
>
<li
class=
"pull-right"
>
<a
class=
"btn btn-outline btn-default"
href=
"{% url 'perms:asset-permission-update' pk=
asset_permission
.id %}"
><i
class=
"fa fa-edit"
></i>
{% trans 'Update' %}
</a>
<a
class=
"btn btn-outline btn-default"
href=
"{% url 'perms:asset-permission-update' pk=
object
.id %}"
><i
class=
"fa fa-edit"
></i>
{% trans 'Update' %}
</a>
</li>
</li>
<li
class=
"pull-right"
>
<li
class=
"pull-right"
>
<a
class=
"btn btn-outline btn-danger btn-delete-perm"
>
<a
class=
"btn btn-outline btn-danger btn-delete-perm"
>
...
@@ -40,7 +40,7 @@
...
@@ -40,7 +40,7 @@
<div
class=
"col-sm-7"
style=
"padding-left: 0;"
>
<div
class=
"col-sm-7"
style=
"padding-left: 0;"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<div
class=
"ibox-title"
>
<span
class=
"label"
><b>
{{
asset_permission
.name }}
</b></span>
<span
class=
"label"
><b>
{{
object
.name }}
</b></span>
<div
class=
"ibox-tools"
>
<div
class=
"ibox-tools"
>
<a
class=
"collapse-link"
>
<a
class=
"collapse-link"
>
<i
class=
"fa fa-chevron-up"
></i>
<i
class=
"fa fa-chevron-up"
></i>
...
@@ -60,43 +60,47 @@
...
@@ -60,43 +60,47 @@
<tbody>
<tbody>
<tr
class=
"no-borders-tr"
>
<tr
class=
"no-borders-tr"
>
<td>
{% trans 'Name' %}:
</td>
<td>
{% trans 'Name' %}:
</td>
<td><b>
{{
asset_permission
.name }}
</b></td>
<td><b>
{{
object
.name }}
</b></td>
</tr>
</tr>
<tr>
<tr>
<td>
{% trans 'User count' %}:
</td>
<td>
{% trans 'User count' %}:
</td>
<td><b>
{{
asset_permission
.users.count }}
</b></td>
<td><b>
{{
object
.users.count }}
</b></td>
</tr>
</tr>
<tr>
<tr>
<td>
{% trans 'User group count' %}:
</td>
<td>
{% trans 'User group count' %}:
</td>
<td><b>
{{
asset_permission
.users.count }}
</b></td>
<td><b>
{{
object
.users.count }}
</b></td>
</tr>
</tr>
<tr>
<tr>
<td>
{% trans 'Asset count' %}:
</td>
<td>
{% trans 'Asset count' %}:
</td>
<td><b>
{{
asset_permission
.assets.count }}
</b></td>
<td><b>
{{
object
.assets.count }}
</b></td>
</tr>
</tr>
<tr>
<tr>
<td>
{% trans '
Asset group
count' %}:
</td>
<td>
{% trans '
Node
count' %}:
</td>
<td><b>
{{
asset_permission.asset_group
s.count }}
</b></td>
<td><b>
{{
object.node
s.count }}
</b></td>
</tr>
</tr>
<tr>
<tr>
<td>
{% trans 'System user count' %}:
</td>
<td>
{% trans 'System user count' %}:
</td>
<td><b>
{{ asset_permission.system_users.count }}
</b></td>
<td><b>
{{ object.system_users.count }}
</b></td>
</tr>
<tr>
<td>
{% trans 'Date start' %}:
</td>
<td><b>
{{ object.date_start }}
</b></td>
</tr>
</tr>
<tr>
<tr>
<td>
{% trans 'Date expired' %}:
</td>
<td>
{% trans 'Date expired' %}:
</td>
<td><b>
{{
asset_permission
.date_expired }}
</b></td>
<td><b>
{{
object
.date_expired }}
</b></td>
</tr>
</tr>
<tr>
<tr>
<td>
{% trans 'Date created' %}:
</td>
<td>
{% trans 'Date created' %}:
</td>
<td><b>
{{
asset_permission
.date_created }}
</b></td>
<td><b>
{{
object
.date_created }}
</b></td>
</tr>
</tr>
<tr>
<tr>
<td>
{% trans 'Created by' %}:
</td>
<td>
{% trans 'Created by' %}:
</td>
<td><b>
{{
asset_permission
.created_by }}
</b></td>
<td><b>
{{
object
.created_by }}
</b></td>
</tr>
</tr>
<tr>
<tr>
<td>
{% trans 'Comment' %}:
</td>
<td>
{% trans 'Comment' %}:
</td>
<td><b>
{{
asset_permission
.comment }}
</b></td>
<td><b>
{{
object
.comment }}
</b></td>
</tr>
</tr>
</tbody>
</tbody>
</table>
</table>
...
@@ -117,7 +121,7 @@
...
@@ -117,7 +121,7 @@
<td><span
style=
"float: right"
>
<td><span
style=
"float: right"
>
<div
class=
"switch"
>
<div
class=
"switch"
>
<div
class=
"onoffswitch"
>
<div
class=
"onoffswitch"
>
<input
type=
"checkbox"
{%
if
asset_permission
.
is_active
%}
checked
{%
endif
%}
class=
"onoffswitch-checkbox"
id=
"is_active"
>
<input
type=
"checkbox"
{%
if
object
.
is_active
%}
checked
{%
endif
%}
class=
"onoffswitch-checkbox"
id=
"is_active"
>
<label
class=
"onoffswitch-label"
for=
"is_active"
>
<label
class=
"onoffswitch-label"
for=
"is_active"
>
<span
class=
"onoffswitch-inner"
></span>
<span
class=
"onoffswitch-inner"
></span>
<span
class=
"onoffswitch-switch"
></span>
<span
class=
"onoffswitch-switch"
></span>
...
@@ -155,7 +159,7 @@
...
@@ -155,7 +159,7 @@
</tr>
</tr>
</form>
</form>
{% for system_user in
system_users
%}
{% for system_user in
object.system_users.all
%}
<tr
{%
if
forloop
.
counter =
=
1
%}
class=
"no-borders-tr"
{%
endif
%}
>
<tr
{%
if
forloop
.
counter =
=
1
%}
class=
"no-borders-tr"
{%
endif
%}
>
<td
><b
class=
"bdg-system-user"
data-uid=
{{
system_user
.
id
}}
>
{{ system_user.name }}
</b></td>
<td
><b
class=
"bdg-system-user"
data-uid=
{{
system_user
.
id
}}
>
{{ system_user.name }}
</b></td>
<td>
<td>
...
@@ -179,7 +183,7 @@
...
@@ -179,7 +183,7 @@
jumpserver
.
system_users_selected
=
{};
jumpserver
.
system_users_selected
=
{};
function
updateSystemUser
(
system_users
)
{
function
updateSystemUser
(
system_users
)
{
var
the_url
=
"{% url 'api-perms:asset-permission-detail' pk=
asset_permission
.id %}"
;
var
the_url
=
"{% url 'api-perms:asset-permission-detail' pk=
object
.id %}"
;
var
body
=
{
var
body
=
{
system_users
:
Object
.
assign
([],
system_users
)
system_users
:
Object
.
assign
([],
system_users
)
};
};
...
@@ -203,7 +207,7 @@ $(document).ready(function () {
...
@@ -203,7 +207,7 @@ $(document).ready(function () {
.
on
(
'click'
,
'.btn-delete-perm'
,
function
()
{
.
on
(
'click'
,
'.btn-delete-perm'
,
function
()
{
var
$this
=
$
(
this
);
var
$this
=
$
(
this
);
var
name
=
"{{ asset_permission.name }}"
;
var
name
=
"{{ asset_permission.name }}"
;
var
uid
=
"{{
asset_permission
.id }}"
;
var
uid
=
"{{
object
.id }}"
;
var
the_url
=
'{% url "api-perms:asset-permission-detail" pk=DEFAULT_PK %}'
.
replace
(
'{{ DEFAULT_PK }}'
,
uid
);
var
the_url
=
'{% url "api-perms:asset-permission-detail" pk=DEFAULT_PK %}'
.
replace
(
'{{ DEFAULT_PK }}'
,
uid
);
var
redirect_url
=
"{% url 'perms:asset-permission-list' %}"
;
var
redirect_url
=
"{% url 'perms:asset-permission-list' %}"
;
objectDelete
(
$this
,
name
,
the_url
,
redirect_url
);
objectDelete
(
$this
,
name
,
the_url
,
redirect_url
);
...
@@ -238,7 +242,7 @@ $(document).ready(function () {
...
@@ -238,7 +242,7 @@ $(document).ready(function () {
updateSystemUser
(
system_users
);
updateSystemUser
(
system_users
);
$tr
.
remove
()
$tr
.
remove
()
}).
on
(
'click'
,
'#is_active'
,
function
()
{
}).
on
(
'click'
,
'#is_active'
,
function
()
{
var
the_url
=
'{% url "api-perms:asset-permission-detail" pk=
asset_permission
.id %}'
;
var
the_url
=
'{% url "api-perms:asset-permission-detail" pk=
object
.id %}'
;
var
checked
=
$
(
this
).
prop
(
'checked'
);
var
checked
=
$
(
this
).
prop
(
'checked'
);
var
body
=
{
var
body
=
{
'is_active'
:
checked
'is_active'
:
checked
...
...
apps/perms/templates/perms/asset_permission_user.html
View file @
8b3b517b
...
@@ -57,12 +57,12 @@
...
@@ -57,12 +57,12 @@
</tr>
</tr>
</thead>
</thead>
<tbody>
<tbody>
{% for user in
page_obj
%}
{% for user in
object_list
%}
<tr>
<tr>
<td>
{{ user.name }}
</td>
<td>
{{ user.name }}
</td>
<td>
{{ user.username }}
</td>
<td>
{{ user.username }}
</td>
<td>
<td>
<button
class=
"btn btn-danger btn-xs btn-remove-user {% if user.i
s_inherit_from_user_groups
%} disabled {% endif %}"
data-gid=
"{{ user.id }}"
type=
"button"
style=
"float: right;"
><i
class=
"fa fa-minus"
></i></button>
<button
class=
"btn btn-danger btn-xs btn-remove-user {% if user.i
nherit
%} disabled {% endif %}"
data-gid=
"{{ user.id }}"
type=
"button"
style=
"float: right;"
><i
class=
"fa fa-minus"
></i></button>
</td>
</td>
</tr>
</tr>
{% endfor %}
{% endfor %}
...
@@ -127,7 +127,7 @@
...
@@ -127,7 +127,7 @@
</tr>
</tr>
</form>
</form>
{% for user_group in
user_groups
%}
{% for user_group in
asset_permission.user_groups.all
%}
<tr>
<tr>
<td
><b
class=
"bdg_group"
data-gid=
{{
user_group
.
id
}}
>
{{ user_group.name }}
</b></td>
<td
><b
class=
"bdg_group"
data-gid=
{{
user_group
.
id
}}
>
{{ user_group.name }}
</b></td>
<td>
<td>
...
...
apps/perms/urls/api_urls.py
View file @
8b3b517b
...
@@ -11,20 +11,50 @@ router.register('v1/asset-permissions', api.AssetPermissionViewSet, 'asset-permi
...
@@ -11,20 +11,50 @@ router.register('v1/asset-permissions', api.AssetPermissionViewSet, 'asset-permi
urlpatterns
=
[
urlpatterns
=
[
# 查询某个用户授权的资产和资产组
# 查询某个用户授权的资产和资产组
url
(
r'^v1/user/(?P<pk>[0-9a-zA-Z\-]{36})/assets/$'
,
api
.
UserGrantedAssetsApi
.
as_view
(),
name
=
'user-assets'
),
url
(
r'^v1/user/(?P<pk>[0-9a-zA-Z\-]{36})/assets/$'
,
url
(
r'^v1/user/assets/$'
,
api
.
UserGrantedAssetsApi
.
as_view
(),
name
=
'my-assets'
),
api
.
UserGrantedAssetsApi
.
as_view
(),
name
=
'user-assets'
),
url
(
r'^v1/user/(?P<pk>[0-9a-zA-Z\-]{36})/nodes/$'
,
api
.
UserGrantedNodesApi
.
as_view
(),
name
=
'user-nodes'
),
url
(
r'^v1/user/assets/$'
,
api
.
UserGrantedAssetsApi
.
as_view
(),
url
(
r'^v1/user/nodes/$'
,
api
.
UserGrantedNodesApi
.
as_view
(),
name
=
'my-nodes'
),
name
=
'my-assets'
),
url
(
r'^v1/user/(?P<pk>[0-9a-zA-Z\-]{36})/nodes/(?P<node_id>[0-9a-zA-Z\-]{36})/assets/$'
,
api
.
UserGrantedNodeAssetsApi
.
as_view
(),
name
=
'user-node-assets'
),
url
(
r'^v1/user/(?P<pk>[0-9a-zA-Z\-]{36})/nodes/$'
,
url
(
r'^v1/user/nodes/(?P<node_id>[0-9a-zA-Z\-]{36})/assets/$'
,
api
.
UserGrantedNodeAssetsApi
.
as_view
(),
name
=
'my-node-assets'
),
api
.
UserGrantedNodesApi
.
as_view
(),
name
=
'user-nodes'
),
url
(
r'^v1/user/(?P<pk>[0-9a-zA-Z\-]{36})/nodes-assets/$'
,
api
.
UserGrantedNodesWithAssetsApi
.
as_view
(),
name
=
'user-nodes-assets'
),
url
(
r'^v1/user/nodes/$'
,
api
.
UserGrantedNodesApi
.
as_view
(),
url
(
r'^v1/user/nodes-assets/$'
,
api
.
UserGrantedNodesWithAssetsApi
.
as_view
(),
name
=
'my-nodes-assets'
),
name
=
'my-nodes'
),
url
(
r'^v1/user/(?P<pk>[0-9a-zA-Z\-]{36})/nodes/(?P<node_id>[0-9a-zA-Z\-]{36})/assets/$'
,
api
.
UserGrantedNodeAssetsApi
.
as_view
(),
name
=
'user-node-assets'
),
url
(
r'^v1/user/nodes/(?P<node_id>[0-9a-zA-Z\-]{36})/assets/$'
,
api
.
UserGrantedNodeAssetsApi
.
as_view
(),
name
=
'my-node-assets'
),
url
(
r'^v1/user/(?P<pk>[0-9a-zA-Z\-]{36})/nodes-assets/$'
,
api
.
UserGrantedNodesWithAssetsApi
.
as_view
(),
name
=
'user-nodes-assets'
),
url
(
r'^v1/user/nodes-assets/$'
,
api
.
UserGrantedNodesWithAssetsApi
.
as_view
(),
name
=
'my-nodes-assets'
),
# 查询某个用户组授权的资产和资产组
# 查询某个用户组授权的资产和资产组
url
(
r'^v1/user-group/(?P<pk>[0-9a-zA-Z\-]{36})/assets/$'
,
api
.
UserGroupGrantedAssetsApi
.
as_view
(),
name
=
'user-group-assets'
),
url
(
r'^v1/user-group/(?P<pk>[0-9a-zA-Z\-]{36})/assets/$'
,
url
(
r'^v1/user-group/(?P<pk>[0-9a-zA-Z\-]{36})/nodes/$'
,
api
.
UserGroupGrantedNodesApi
.
as_view
(),
name
=
'user-group-nodes'
),
api
.
UserGroupGrantedAssetsApi
.
as_view
(),
name
=
'user-group-assets'
),
url
(
r'^v1/user-group/(?P<pk>[0-9a-zA-Z\-]{36})/nodes-assets/$'
,
api
.
UserGroupGrantedNodesWithAssetsApi
.
as_view
(),
name
=
'user-group-nodes-assets'
),
url
(
r'^v1/user-group/(?P<pk>[0-9a-zA-Z\-]{36})/nodes/$'
,
url
(
r'^v1/user-group/(?P<pk>[0-9a-zA-Z\-]{36})/nodes/(?P<node_id>[0-9a-zA-Z\-]{36})/assets/$'
,
api
.
UserGroupGrantedNodeAssetsApi
.
as_view
(),
name
=
'user-group-node-assets'
),
api
.
UserGroupGrantedNodesApi
.
as_view
(),
name
=
'user-group-nodes'
),
url
(
r'^v1/user-group/(?P<pk>[0-9a-zA-Z\-]{36})/nodes-assets/$'
,
api
.
UserGroupGrantedNodesWithAssetsApi
.
as_view
(),
name
=
'user-group-nodes-assets'
),
url
(
r'^v1/user-group/(?P<pk>[0-9a-zA-Z\-]{36})/nodes/(?P<node_id>[0-9a-zA-Z\-]{36})/assets/$'
,
api
.
UserGroupGrantedNodeAssetsApi
.
as_view
(),
name
=
'user-group-node-assets'
),
# 用户和资产授权变更
url
(
r'^v1/asset-permissions/(?P<pk>[0-9a-zA-Z\-]{36})/user/remove/$'
,
api
.
AssetPermissionRemoveUserApi
.
as_view
(),
name
=
'asset-permission-remove-user'
),
url
(
r'^v1/asset-permissions/(?P<pk>[0-9a-zA-Z\-]{36})/user/add/$'
,
api
.
AssetPermissionAddUserApi
.
as_view
(),
name
=
'asset-permission-add-user'
),
url
(
r'^v1/asset-permissions/(?P<pk>[0-9a-zA-Z\-]{36})/asset/remove/$'
,
api
.
AssetPermissionRemoveAssetApi
.
as_view
(),
name
=
'asset-permission-remove-asset'
),
url
(
r'^v1/asset-permissions/(?P<pk>[0-9a-zA-Z\-]{36})/asset/add/$'
,
api
.
AssetPermissionAddAssetApi
.
as_view
(),
name
=
'asset-permission-add-asset'
),
# 验证用户是否有某个资产和系统用户的权限
# 验证用户是否有某个资产和系统用户的权限
url
(
r'v1/asset-permission/user/validate/$'
,
api
.
ValidateUserAssetPermissionView
.
as_view
(),
name
=
'validate-user-asset-permission'
),
url
(
r'v1/asset-permission/user/validate/$'
,
api
.
ValidateUserAssetPermissionView
.
as_view
(),
name
=
'validate-user-asset-permission'
),
...
...
apps/perms/urls/views_urls.py
View file @
8b3b517b
...
@@ -11,8 +11,8 @@ urlpatterns = [
...
@@ -11,8 +11,8 @@ urlpatterns = [
url
(
r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]{36})/update$'
,
views
.
AssetPermissionUpdateView
.
as_view
(),
name
=
'asset-permission-update'
),
url
(
r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]{36})/update$'
,
views
.
AssetPermissionUpdateView
.
as_view
(),
name
=
'asset-permission-update'
),
url
(
r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]{36})$'
,
views
.
AssetPermissionDetailView
.
as_view
(),
name
=
'asset-permission-detail'
),
url
(
r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]{36})$'
,
views
.
AssetPermissionDetailView
.
as_view
(),
name
=
'asset-permission-detail'
),
url
(
r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]{36})/delete$'
,
views
.
AssetPermissionDeleteView
.
as_view
(),
name
=
'asset-permission-delete'
),
url
(
r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]{36})/delete$'
,
views
.
AssetPermissionDeleteView
.
as_view
(),
name
=
'asset-permission-delete'
),
#
url(r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]{36})/user$', views.AssetPermissionUserView.as_view(), name='asset-permission-user-list'),
url
(
r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]{36})/user$'
,
views
.
AssetPermissionUserView
.
as_view
(),
name
=
'asset-permission-user-list'
),
#
url(r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]{36})/asset$', views.AssetPermissionAssetView.as_view(), name='asset-permission-asset-list'),
url
(
r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]{36})/asset$'
,
views
.
AssetPermissionAssetView
.
as_view
(),
name
=
'asset-permission-asset-list'
),
]
]
apps/perms/views.py
View file @
8b3b517b
...
@@ -4,12 +4,12 @@ from __future__ import unicode_literals, absolute_import
...
@@ -4,12 +4,12 @@ from __future__ import unicode_literals, absolute_import
from
django.utils.translation
import
ugettext
as
_
from
django.utils.translation
import
ugettext
as
_
from
django.views.generic
import
ListView
,
CreateView
,
UpdateView
,
DetailView
from
django.views.generic
import
ListView
,
CreateView
,
UpdateView
,
DetailView
from
django.views.generic.edit
import
DeleteView
from
django.views.generic.edit
import
DeleteView
,
SingleObjectMixin
from
django.urls
import
reverse_lazy
from
django.urls
import
reverse_lazy
from
django.conf
import
settings
from
django.conf
import
settings
from
common.
utils
import
is_uuid
from
common.
mixins
import
AdminUserRequiredMixin
from
.hands
import
AdminUserRequiredMixin
,
Node
,
Asset
from
.hands
import
Node
,
Asset
,
SystemUser
,
User
,
UserGroup
from
.models
import
AssetPermission
from
.models
import
AssetPermission
from
.forms
import
AssetPermissionForm
from
.forms
import
AssetPermissionForm
...
@@ -83,7 +83,11 @@ class AssetPermissionDetailView(AdminUserRequiredMixin, DetailView):
...
@@ -83,7 +83,11 @@ class AssetPermissionDetailView(AdminUserRequiredMixin, DetailView):
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
'app'
:
_
(
'Perms'
),
'app'
:
_
(
'Perms'
),
'action'
:
_
(
'Update asset permission'
)
'action'
:
_
(
'Update asset permission'
),
'system_users_remain'
:
SystemUser
.
objects
.
exclude
(
granted_by_permissions
=
self
.
object
),
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
...
@@ -95,3 +99,59 @@ class AssetPermissionDeleteView(AdminUserRequiredMixin, DeleteView):
...
@@ -95,3 +99,59 @@ class AssetPermissionDeleteView(AdminUserRequiredMixin, DeleteView):
success_url
=
reverse_lazy
(
'perms:asset-permission-list'
)
success_url
=
reverse_lazy
(
'perms:asset-permission-list'
)
class
AssetPermissionUserView
(
AdminUserRequiredMixin
,
SingleObjectMixin
,
ListView
):
template_name
=
'perms/asset_permission_user.html'
context_object_name
=
'asset_permission'
paginate_by
=
settings
.
CONFIG
.
DISPLAY_PER_PAGE
object
=
None
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
object
=
self
.
get_object
(
queryset
=
AssetPermission
.
objects
.
all
())
return
super
()
.
get
(
request
,
*
args
,
**
kwargs
)
def
get_queryset
(
self
):
queryset
=
self
.
object
.
get_all_users
()
return
queryset
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'Perms'
),
'action'
:
_
(
'Asset permission user list'
),
'users_remain'
:
User
.
objects
.
exclude
(
asset_permissions
=
self
.
object
)
.
exclude
(
role
=
User
.
ROLE_APP
),
'user_groups_remain'
:
UserGroup
.
objects
.
exclude
(
asset_permissions
=
self
.
object
)
}
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
class
AssetPermissionAssetView
(
AdminUserRequiredMixin
,
SingleObjectMixin
,
ListView
):
template_name
=
'perms/asset_permission_asset.html'
context_object_name
=
'asset_permission'
paginate_by
=
settings
.
CONFIG
.
DISPLAY_PER_PAGE
object
=
None
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
object
=
self
.
get_object
(
queryset
=
AssetPermission
.
objects
.
all
())
return
super
()
.
get
(
request
,
*
args
,
**
kwargs
)
def
get_queryset
(
self
):
queryset
=
self
.
object
.
get_all_assets
()
return
queryset
def
get_context_data
(
self
,
**
kwargs
):
assets_granted
=
self
.
get_queryset
()
context
=
{
'app'
:
_
(
'Perms'
),
'action'
:
_
(
'Asset permission asset list'
),
'assets_remain'
:
Asset
.
objects
.
exclude
(
id__in
=
[
a
.
id
for
a
in
assets_granted
]),
'nodes_remain'
:
Node
.
objects
.
exclude
(
granted_by_permissions
=
self
.
object
),
}
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
\ No newline at end of file
apps/users/models/user.py
View file @
8b3b517b
...
@@ -55,7 +55,7 @@ class User(AbstractUser):
...
@@ -55,7 +55,7 @@ class User(AbstractUser):
created_by
=
models
.
CharField
(
max_length
=
30
,
default
=
''
,
verbose_name
=
_
(
'Created by'
))
created_by
=
models
.
CharField
(
max_length
=
30
,
default
=
''
,
verbose_name
=
_
(
'Created by'
))
def
__str__
(
self
):
def
__str__
(
self
):
return
self
.
username
return
'{0.name}({0.username})'
.
format
(
self
)
@property
@property
def
password_raw
(
self
):
def
password_raw
(
self
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment