From 28ec1eb0ad9ee7ce4d448664fa1d199c1e82d153 Mon Sep 17 00:00:00 2001 From: BaiJiangJie <32935519+BaiJiangJie@users.noreply.github.com> Date: Wed, 3 Jul 2019 16:33:21 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E8=A7=A3=E5=86=B3=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=8E=88=E6=9D=83=E8=B5=84=E4=BA=A7/=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E6=97=B6=EF=BC=8C=E5=89=8D=E7=AB=AF=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E8=B5=84=E4=BA=A7=E6=8E=88=E6=9D=83=E6=A0=91=E7=9A=84?= =?UTF-8?q?bug=20(#2874)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Update] 解决用户授权资产/节点为空时,前端构建资产授权树的bug * [Update] 如果用户授权节点为空,返回时添加空节点 --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 77228 -> 77459 bytes apps/locale/zh/LC_MESSAGES/django.po | 176 +++++++++++++-------------- apps/perms/api/user_permission.py | 4 +- apps/perms/const.py | 1 + apps/perms/utils/asset_permission.py | 10 ++ 5 files changed, 99 insertions(+), 92 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 1bc626f5eb38e181b6a913290769f53546b683f7..d082d3d31bc1888e47d4e68ef9e5c247aa74565c 100644 GIT binary patch delta 23072 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 N$+M|x!GP95{|C(qLr?$! delta 22844 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\n" "Language-Team: Jumpserver team\n" @@ -86,13 +86,13 @@ msgstr "运行参数" #: assets/templates/assets/system_user_list.html:55 audits/models.py:19 #: audits/templates/audits/ftp_log_list.html:41 #: audits/templates/audits/ftp_log_list.html:71 -#: perms/forms/asset_permission.py:68 perms/models/asset_permission.py:85 +#: perms/forms/asset_permission.py:68 perms/models/asset_permission.py:68 #: perms/templates/perms/asset_permission_create_update.html:45 #: perms/templates/perms/asset_permission_list.html:48 #: perms/templates/perms/asset_permission_list.html:117 #: terminal/backends/command/models.py:13 terminal/models.py:155 -#: terminal/templates/terminal/command_list.html:40 -#: terminal/templates/terminal/command_list.html:73 +#: terminal/templates/terminal/command_list.html:33 +#: terminal/templates/terminal/command_list.html:59 #: terminal/templates/terminal/session_list.html:41 #: terminal/templates/terminal/session_list.html:72 #: xpack/plugins/change_auth_plan/forms.py:114 @@ -115,15 +115,15 @@ msgstr "资产" #: assets/models/user.py:160 assets/templates/assets/user_asset_list.html:172 #: audits/models.py:20 audits/templates/audits/ftp_log_list.html:49 #: audits/templates/audits/ftp_log_list.html:72 -#: perms/forms/asset_permission.py:74 perms/models/asset_permission.py:87 -#: perms/models/asset_permission.py:104 +#: perms/forms/asset_permission.py:74 perms/models/asset_permission.py:70 +#: perms/models/asset_permission.py:95 #: perms/templates/perms/asset_permission_detail.html:140 #: perms/templates/perms/asset_permission_list.html:50 #: perms/templates/perms/asset_permission_list.html:71 #: perms/templates/perms/asset_permission_list.html:123 templates/_nav.html:25 #: terminal/backends/command/models.py:14 terminal/models.py:156 -#: terminal/templates/terminal/command_list.html:48 -#: terminal/templates/terminal/command_list.html:74 +#: terminal/templates/terminal/command_list.html:34 +#: terminal/templates/terminal/command_list.html:60 #: terminal/templates/terminal/session_list.html:49 #: terminal/templates/terminal/session_list.html:73 #: xpack/plugins/orgs/templates/orgs/org_list.html:19 @@ -149,8 +149,7 @@ msgstr "系统用户" #: assets/templates/assets/system_user_detail.html:58 #: assets/templates/assets/system_user_list.html:51 ops/models/adhoc.py:37 #: ops/templates/ops/task_detail.html:60 ops/templates/ops/task_list.html:27 -#: orgs/models.py:11 perms/models/asset_permission.py:23 -#: perms/models/base.py:35 +#: orgs/models.py:11 perms/models/base.py:35 #: perms/templates/perms/asset_permission_detail.html:62 #: perms/templates/perms/asset_permission_list.html:45 #: perms/templates/perms/asset_permission_list.html:64 @@ -215,7 +214,7 @@ msgstr "参数" #: assets/templates/assets/domain_detail.html:72 #: assets/templates/assets/system_user_detail.html:100 #: ops/templates/ops/adhoc_detail.html:86 orgs/models.py:14 -#: perms/models/asset_permission.py:107 perms/models/base.py:41 +#: perms/models/asset_permission.py:98 perms/models/base.py:41 #: perms/templates/perms/asset_permission_detail.html:98 #: perms/templates/perms/remote_app_permission_detail.html:90 #: users/models/user.py:105 users/serializers/v1.py:107 @@ -238,7 +237,7 @@ msgstr "创建者" #: assets/templates/assets/domain_detail.html:68 #: assets/templates/assets/system_user_detail.html:96 #: ops/templates/ops/adhoc_detail.html:90 ops/templates/ops/task_detail.html:64 -#: orgs/models.py:15 perms/models/asset_permission.py:108 +#: orgs/models.py:15 perms/models/asset_permission.py:99 #: perms/models/base.py:42 #: perms/templates/perms/asset_permission_detail.html:94 #: perms/templates/perms/remote_app_permission_detail.html:86 @@ -274,7 +273,7 @@ msgstr "创建日期" #: assets/templates/assets/system_user_detail.html:104 #: assets/templates/assets/system_user_list.html:59 #: assets/templates/assets/user_asset_list.html:175 ops/models/adhoc.py:43 -#: orgs/models.py:16 perms/models/asset_permission.py:109 +#: orgs/models.py:16 perms/models/asset_permission.py:100 #: perms/models/base.py:43 #: perms/templates/perms/asset_permission_detail.html:102 #: perms/templates/perms/remote_app_permission_detail.html:94 @@ -367,7 +366,7 @@ msgstr "重置" #: settings/templates/settings/replay_storage_create.html:153 #: settings/templates/settings/security_setting.html:74 #: settings/templates/settings/terminal_setting.html:73 -#: terminal/templates/terminal/command_list.html:103 +#: terminal/templates/terminal/command_list.html:50 #: terminal/templates/terminal/session_list.html:127 #: terminal/templates/terminal/terminal_update.html:46 #: users/templates/users/_user.html:51 @@ -527,7 +526,7 @@ msgstr "创建远程应用" #: audits/templates/audits/operate_log_list.html:67 #: 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:34 -#: perms/forms/asset_permission.py:21 perms/models/asset_permission.py:27 +#: perms/forms/asset_permission.py:21 #: perms/templates/perms/asset_permission_create_update.html:50 #: perms/templates/perms/asset_permission_list.html:52 #: perms/templates/perms/asset_permission_list.html:126 @@ -548,8 +547,8 @@ msgid "Action" msgstr "动作" #: applications/templates/applications/user_remote_app_list.html:57 -#: assets/templates/assets/user_asset_list.html:100 perms/const.py:19 -#: perms/models/asset_permission.py:46 +#: assets/templates/assets/user_asset_list.html:100 +#: perms/models/asset_permission.py:27 msgid "Connect" msgstr "连接" @@ -619,7 +618,7 @@ msgstr "未知" #: assets/templates/assets/asset_detail.html:194 #: assets/templates/assets/asset_detail.html:202 #: assets/templates/assets/system_user_assets.html:83 -#: perms/models/asset_permission.py:86 +#: perms/models/asset_permission.py:69 #: xpack/plugins/change_auth_plan/models.py:72 msgid "Nodes" msgstr "节点" @@ -654,7 +653,7 @@ msgstr "网域" #: assets/forms/asset.py:134 assets/models/node.py:248 #: assets/templates/assets/asset_create.html:42 #: perms/forms/asset_permission.py:71 perms/forms/asset_permission.py:79 -#: perms/models/asset_permission.py:102 +#: perms/models/asset_permission.py:93 #: perms/templates/perms/asset_permission_list.html:49 #: perms/templates/perms/asset_permission_list.html:70 #: perms/templates/perms/asset_permission_list.html:120 @@ -1036,8 +1035,8 @@ msgstr "正则表达式" #: assets/models/cmd_filter.py:39 ops/models/command.py:21 #: ops/templates/ops/command_execution_list.html:61 terminal/models.py:161 -#: terminal/templates/terminal/command_list.html:55 -#: terminal/templates/terminal/command_list.html:71 +#: terminal/templates/terminal/command_list.html:31 +#: terminal/templates/terminal/command_list.html:61 #: terminal/templates/terminal/session_detail.html:48 #: terminal/templates/terminal/session_list.html:77 msgid "Command" @@ -1122,7 +1121,7 @@ msgstr "默认资产组" #: perms/templates/perms/remote_app_permission_list.html:15 #: templates/index.html:87 terminal/backends/command/models.py:12 #: terminal/models.py:154 terminal/templates/terminal/command_list.html:32 -#: terminal/templates/terminal/command_list.html:72 +#: terminal/templates/terminal/command_list.html:58 #: terminal/templates/terminal/session_list.html:33 #: terminal/templates/terminal/session_list.html:71 users/forms.py:301 #: users/models/user.py:38 users/models/user.py:431 users/serializers/v1.py:96 @@ -1427,7 +1426,7 @@ msgstr "关闭" #: audits/templates/audits/operate_log_list.html:71 #: audits/templates/audits/password_change_log_list.html:53 #: ops/templates/ops/task_adhoc.html:63 -#: terminal/templates/terminal/command_list.html:76 +#: terminal/templates/terminal/command_list.html:36 #: terminal/templates/terminal/session_detail.html:50 msgid "Datetime" msgstr "日期" @@ -1661,7 +1660,7 @@ msgstr "比例" #: users/templates/users/user_group_list.html:194 #: users/templates/users/user_list.html:158 #: users/templates/users/user_list.html:190 -#: xpack/plugins/vault/templates/vault/vault.html:224 +#: xpack/plugins/vault/templates/vault/vault.html:223 msgid "Please select file" msgstr "选择文件" @@ -1710,7 +1709,7 @@ msgstr "创建日期" #: assets/templates/assets/asset_detail.html:154 #: assets/templates/assets/user_asset_list.html:46 -#: perms/models/asset_permission.py:105 perms/models/base.py:38 +#: perms/models/asset_permission.py:96 perms/models/base.py:38 #: perms/templates/perms/asset_permission_create_update.html:55 #: perms/templates/perms/asset_permission_detail.html:120 #: perms/templates/perms/remote_app_permission_create_update.html:54 @@ -2274,7 +2273,6 @@ msgstr "选择用户" #: ops/templates/ops/command_execution_list.html:48 #: ops/templates/ops/task_list.html:13 ops/templates/ops/task_list.html:18 #: templates/_base_list.html:41 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:52 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:48 @@ -2612,27 +2610,27 @@ msgstr "" msgid "Encrypt field using Secret Key" msgstr "" -#: common/mixins.py:36 -msgid "is discard" -msgstr "" - -#: common/mixins.py:37 -msgid "discard time" -msgstr "" - -#: common/mixins.py:210 +#: common/mixins/api.py:60 #, python-format msgid "%(name)s was %(action)s successfully" msgstr "%(name)s %(action)s成功" -#: common/mixins.py:211 +#: common/mixins/api.py:61 msgid "create" msgstr "创建" -#: common/mixins.py:211 +#: common/mixins/api.py:61 msgid "update" msgstr "更新" +#: common/mixins/models.py:31 +msgid "is discard" +msgstr "" + +#: common/mixins/models.py:32 +msgid "discard time" +msgstr "" + #: common/validators.py:11 msgid "Special char not allowed" msgstr "不能包含特殊字符" @@ -2992,24 +2990,12 @@ msgstr "命令执行列表" msgid "Command execution" msgstr "命令执行" -#: orgs/mixins.py:71 orgs/mixins.py:191 orgs/models.py:26 +#: orgs/mixins.py:71 orgs/mixins.py:191 orgs/models.py:27 msgid "Organization" msgstr "组织" -#: perms/const.py:18 perms/models/asset_permission.py:45 settings/forms.py:143 -msgid "All" -msgstr "全部" - -#: perms/const.py:20 perms/models/asset_permission.py:47 -msgid "Upload file" -msgstr "上传文件" - -#: perms/const.py:21 perms/models/asset_permission.py:48 -msgid "Download file" -msgstr "下载文件" - #: perms/forms/asset_permission.py:65 perms/forms/remote_app_permission.py:34 -#: perms/models/asset_permission.py:103 perms/models/base.py:37 +#: perms/models/asset_permission.py:94 perms/models/base.py:37 #: perms/templates/perms/asset_permission_list.html:47 #: perms/templates/perms/asset_permission_list.html:67 #: perms/templates/perms/asset_permission_list.html:114 @@ -3036,20 +3022,32 @@ msgstr "用户和用户组至少选一个" msgid "Asset or group at least one required" msgstr "资产和节点至少选一个" -#: perms/models/asset_permission.py:49 +#: perms/models/asset_permission.py:26 settings/forms.py:143 +msgid "All" +msgstr "全部" + +#: perms/models/asset_permission.py:28 +msgid "Upload file" +msgstr "上传文件" + +#: perms/models/asset_permission.py:29 +msgid "Download file" +msgstr "下载文件" + +#: perms/models/asset_permission.py:30 msgid "Upload download" msgstr "上传下载" -#: perms/models/asset_permission.py:89 +#: perms/models/asset_permission.py:72 msgid "Actions" msgstr "动作" -#: perms/models/asset_permission.py:93 perms/models/asset_permission.py:115 +#: perms/models/asset_permission.py:76 perms/models/asset_permission.py:106 #: templates/_nav.html:44 msgid "Asset permission" msgstr "资产授权" -#: perms/models/asset_permission.py:106 perms/models/base.py:40 +#: perms/models/asset_permission.py:97 perms/models/base.py:40 #: perms/templates/perms/asset_permission_detail.html:90 #: perms/templates/perms/remote_app_permission_detail.html:82 #: users/models/user.py:102 users/templates/users/user_detail.html:107 @@ -3198,9 +3196,13 @@ msgstr "添加用户" msgid "Add user group to this permission" msgstr "添加用户组" -#: perms/views/asset_permission.py:34 perms/views/asset_permission.py:65 -#: perms/views/asset_permission.py:82 perms/views/asset_permission.py:99 -#: perms/views/asset_permission.py:136 perms/views/asset_permission.py:169 +#: perms/utils/asset_permission.py:115 +msgid "Empty" +msgstr "空" + +#: perms/views/asset_permission.py:33 perms/views/asset_permission.py:64 +#: perms/views/asset_permission.py:81 perms/views/asset_permission.py:98 +#: perms/views/asset_permission.py:135 perms/views/asset_permission.py:168 #: perms/views/remote_app_permission.py:33 #: perms/views/remote_app_permission.py:49 #: perms/views/remote_app_permission.py:65 @@ -3211,27 +3213,27 @@ msgstr "添加用户组" msgid "Perms" msgstr "权限管理" -#: perms/views/asset_permission.py:35 +#: perms/views/asset_permission.py:34 msgid "Asset permission list" msgstr "资产授权列表" -#: perms/views/asset_permission.py:66 +#: perms/views/asset_permission.py:65 msgid "Create asset permission" msgstr "创建权限规则" -#: perms/views/asset_permission.py:83 +#: perms/views/asset_permission.py:82 msgid "Update asset permission" msgstr "更新资产授权" -#: perms/views/asset_permission.py:100 +#: perms/views/asset_permission.py:99 msgid "Asset permission detail" msgstr "资产授权详情" -#: perms/views/asset_permission.py:137 +#: perms/views/asset_permission.py:136 msgid "Asset permission user list" msgstr "资产授权用户列表" -#: perms/views/asset_permission.py:170 +#: perms/views/asset_permission.py:169 msgid "Asset permission asset list" msgstr "资产授权资产列表" @@ -3938,7 +3940,7 @@ msgid "Command filters" msgstr "命令过滤" #: templates/_nav.html:55 templates/_nav_audits.html:11 -#: terminal/views/command.py:51 terminal/views/session.py:74 +#: terminal/views/command.py:38 terminal/views/session.py:74 #: terminal/views/session.py:92 terminal/views/session.py:116 #: terminal/views/terminal.py:31 terminal/views/terminal.py:47 #: terminal/views/terminal.py:60 @@ -4178,7 +4180,7 @@ msgid "Input" msgstr "输入" #: terminal/backends/command/models.py:17 -#: terminal/templates/terminal/command_list.html:75 +#: terminal/templates/terminal/command_list.html:35 #: terminal/templates/terminal/terminal_list.html:33 msgid "Session" msgstr "会话" @@ -4244,21 +4246,21 @@ msgstr "结束日期" msgid "Args" msgstr "参数" -#: terminal/templates/terminal/command_list.html:88 -msgid "Goto" -msgstr "转到" - -#: terminal/templates/terminal/command_list.html:99 +#: terminal/templates/terminal/command_list.html:46 msgid "Export command" msgstr "导出命令" +#: terminal/templates/terminal/command_list.html:172 +msgid "Goto" +msgstr "转到" + #: terminal/templates/terminal/session_detail.html:17 #: terminal/views/session.py:117 msgid "Session detail" msgstr "会话详情" #: terminal/templates/terminal/session_detail.html:28 -#: terminal/views/command.py:52 +#: terminal/views/command.py:39 msgid "Command list" msgstr "命令记录列表" @@ -5756,7 +5758,7 @@ msgid "Interface settings" msgstr "界面设置" #: xpack/plugins/interface/templates/interface/interface.html:15 -#: xpack/plugins/interface/views.py:25 +#: xpack/plugins/interface/views.py:24 xpack/plugins/interface/views.py:25 msgid "Interface setting" msgstr "界面设置" @@ -5779,10 +5781,6 @@ msgstr "恢复默认成功!" msgid "Restore default failed." msgstr "恢复默认失败!" -#: xpack/plugins/interface/views.py:24 -msgid "Interface" -msgstr "界面" - #: xpack/plugins/interface/views.py:51 msgid "It is already in the default setting state!" msgstr "当前已经是初始化状态!" @@ -5886,7 +5884,9 @@ msgstr "无效的许可证" msgid "Admin" msgstr "管理员" -#: xpack/plugins/orgs/meta.py:8 +#: xpack/plugins/orgs/meta.py:8 xpack/plugins/orgs/views.py:26 +#: xpack/plugins/orgs/views.py:43 xpack/plugins/orgs/views.py:60 +#: xpack/plugins/orgs/views.py:77 msgid "Organizations" msgstr "组织管理" @@ -5903,19 +5903,10 @@ msgstr "添加管理员" msgid "Create organization " msgstr "创建组织" -#: xpack/plugins/orgs/views.py:26 -msgid "Org" -msgstr "" - #: xpack/plugins/orgs/views.py:27 msgid "Org list" msgstr "组织列表" -#: xpack/plugins/orgs/views.py:43 xpack/plugins/orgs/views.py:60 -#: xpack/plugins/orgs/views.py:77 -msgid "Orgs" -msgstr "" - #: xpack/plugins/orgs/views.py:44 msgid "Create org" msgstr "创建组织" @@ -5924,8 +5915,8 @@ msgstr "创建组织" msgid "Update org" msgstr "更新组织" -#: xpack/plugins/vault/meta.py:11 xpack/plugins/vault/views.py:23 -#: xpack/plugins/vault/views.py:38 +#: xpack/plugins/vault/meta.py:11 xpack/plugins/vault/views.py:22 +#: xpack/plugins/vault/views.py:37 msgid "Vault" msgstr "密码匣子" @@ -5933,14 +5924,17 @@ msgstr "密码匣子" msgid "Import vault" msgstr "导入密码" -#: xpack/plugins/vault/views.py:24 +#: xpack/plugins/vault/views.py:23 msgid "vault list" msgstr "密码匣子" -#: xpack/plugins/vault/views.py:39 +#: xpack/plugins/vault/views.py:38 msgid "vault create" msgstr "创建" +#~ msgid "Interface" +#~ msgstr "界面" + #~ msgid "already exists" #~ msgstr "已经存在" diff --git a/apps/perms/api/user_permission.py b/apps/perms/api/user_permission.py index 377b39722..ee624b242 100644 --- a/apps/perms/api/user_permission.py +++ b/apps/perms/api/user_permission.py @@ -299,12 +299,14 @@ class UserGrantedNodeAssetsApi(UserPermissionCacheMixin, AssetsFilterMixin, List nodes = util.get_nodes_with_assets() if str(node_id) == const.UNGROUPED_NODE_ID: node = util.tree.ungrouped_node + elif str(node_id) == const.EMPTY_NODE_ID: + node = util.tree.empty_node else: node = get_object_or_404(Node, id=node_id) if node == util.tree.root_node: assets = util.get_assets() else: - assets = nodes.get(node, []) + assets = nodes.get(node, {}) for asset, system_users in assets.items(): asset.system_users_granted = system_users diff --git a/apps/perms/const.py b/apps/perms/const.py index 23d2ba044..b18580747 100644 --- a/apps/perms/const.py +++ b/apps/perms/const.py @@ -2,3 +2,4 @@ # UNGROUPED_NODE_ID = "00000000-0000-0000-0000-000000000002" +EMPTY_NODE_ID = "00000000-0000-0000-0000-000000000003" diff --git a/apps/perms/utils/asset_permission.py b/apps/perms/utils/asset_permission.py index c26047ff4..351df2a2d 100644 --- a/apps/perms/utils/asset_permission.py +++ b/apps/perms/utils/asset_permission.py @@ -109,6 +109,13 @@ class GenerateTree: self._ungroup_node = node return node + @property + def empty_node(self): + node_id = const.EMPTY_NODE_ID + value = _('Empty') + node = Node(id=node_id, value=value) + return node + #@timeit def add_assets_without_system_users(self, assets): for asset in assets: @@ -176,6 +183,9 @@ class GenerateTree: for node, values in self.nodes.items(): node._assets_amount = values["assets_amount"] nodes[node] = {asset: self.assets.get(asset, {}) for asset in values["assets"]} + # 如果返回空节点,页面构造授权资产树报错 + if not nodes: + nodes[self.empty_node] = {} self._nodes_with_assets = nodes return dict(nodes)