From 5f96f8c229b349f2856986185420807bb4effe28 Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Thu, 10 Oct 2019 16:18:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[Update]=20=E4=BC=98=E5=8C=96=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E5=88=A0=E9=99=A4=20API=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=B1=E8=B4=A5=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/api/node.py | 12 +++- apps/assets/models/node.py | 7 +- apps/locale/zh/LC_MESSAGES/django.mo | Bin 80778 -> 80897 bytes apps/locale/zh/LC_MESSAGES/django.po | 99 ++++++++++++++------------- 4 files changed, 69 insertions(+), 49 deletions(-) diff --git a/apps/assets/api/node.py b/apps/assets/api/node.py index 4e608163f..fbdebabc5 100644 --- a/apps/assets/api/node.py +++ b/apps/assets/api/node.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rest_framework import generics +from rest_framework import generics, status from rest_framework.serializers import ValidationError from rest_framework.views import APIView from rest_framework.response import Response @@ -59,6 +59,16 @@ class NodeViewSet(OrgModelViewSet): raise ValidationError({"error": msg}) return super().perform_update(serializer) + def destroy(self, request, *args, **kwargs): + node = self.get_object() + if node.has_children_or_contains_assets(): + msg = _("Deletion failed " + "and the node contains children or assets") + return Response( + data={'msg': msg}, status=status.HTTP_500_INTERNAL_SERVER_ERROR + ) + return super().destroy(request, *args, **kwargs) + class NodeListAsTreeApi(generics.ListAPIView): """ diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index d1628be76..71e1d4a24 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -470,8 +470,13 @@ class Node(OrgModelMixin, SomeNodesMixin, TreeMixin, FamilyMixin, FullValueMixin tree_node = TreeNode(**data) return tree_node - def delete(self, using=None, keep_parents=False): + def has_children_or_contains_assets(self): if self.children or self.get_assets(): + return True + return False + + def delete(self, using=None, keep_parents=False): + if self.has_children_or_contains_assets(): return return super().delete(using=using, keep_parents=keep_parents) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 4d853714e2fee29dd0f111503dab31528d3d45e8..39c1b8257bb75983e7d5bd0eddbdf40b1b569cd8 100644 GIT binary patch delta 23445 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 z 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 Xf*al&IrYKDp?9_}S>NeJ+UoxY-$O&u delta 23325 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 F{tv);9W?*| diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 4240cb36f..6abaad43b 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Jumpserver 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-08 17:09+0800\n" +"POT-Creation-Date: 2019-10-10 16:15+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -114,7 +114,7 @@ msgstr "资产" #: applications/templates/applications/user_remote_app_list.html:16 #: assets/forms/asset.py:24 assets/forms/domain.py:73 assets/forms/user.py:74 #: assets/forms/user.py:94 assets/models/base.py:28 assets/models/cluster.py:18 -#: assets/models/cmd_filter.py:20 assets/models/domain.py:20 +#: assets/models/cmd_filter.py:21 assets/models/domain.py:20 #: assets/models/group.py:20 assets/models/label.py:18 #: assets/templates/assets/admin_user_detail.html:56 #: assets/templates/assets/admin_user_list.html:44 @@ -186,8 +186,8 @@ msgstr "参数" #: applications/models/remote_app.py:39 #: applications/templates/applications/remote_app_detail.html:73 #: assets/models/asset.py:174 assets/models/base.py:36 -#: assets/models/cluster.py:28 assets/models/cmd_filter.py:25 -#: assets/models/cmd_filter.py:58 assets/models/group.py:21 +#: assets/models/cluster.py:28 assets/models/cmd_filter.py:26 +#: assets/models/cmd_filter.py:59 assets/models/group.py:21 #: assets/templates/assets/admin_user_detail.html:68 #: assets/templates/assets/asset_detail.html:124 #: assets/templates/assets/cmd_filter_detail.html:77 @@ -238,8 +238,8 @@ msgstr "创建日期" #: applications/templates/applications/remote_app_list.html:23 #: applications/templates/applications/user_remote_app_list.html:19 #: assets/models/asset.py:176 assets/models/base.py:33 -#: assets/models/cluster.py:29 assets/models/cmd_filter.py:22 -#: assets/models/cmd_filter.py:55 assets/models/domain.py:21 +#: assets/models/cluster.py:29 assets/models/cmd_filter.py:23 +#: assets/models/cmd_filter.py:56 assets/models/domain.py:21 #: assets/models/domain.py:53 assets/models/group.py:23 #: assets/models/label.py:23 assets/templates/assets/admin_user_detail.html:72 #: assets/templates/assets/admin_user_list.html:50 @@ -498,7 +498,7 @@ msgstr "创建远程应用" #: applications/templates/applications/remote_app_list.html:24 #: applications/templates/applications/user_remote_app_list.html:20 -#: assets/models/cmd_filter.py:54 +#: assets/models/cmd_filter.py:55 #: assets/templates/assets/_asset_user_list.html:25 #: assets/templates/assets/admin_user_list.html:51 #: assets/templates/assets/asset_list.html:100 @@ -568,11 +568,15 @@ msgstr "我的远程应用" msgid "You can't update the root node name" msgstr "不能修改根节点名称" -#: assets/api/node.py:266 +#: assets/api/node.py:65 +msgid "Deletion failed and the node contains children or assets" +msgstr "删除失败,节点包含子节点或资产" + +#: assets/api/node.py:276 msgid "Update node asset hardware information: {}" msgstr "更新节点资产硬件信息: {}" -#: assets/api/node.py:280 +#: assets/api/node.py:290 msgid "Test if the assets under the node are connectable: {}" msgstr "测试节点下资产是否可连接: {}" @@ -745,7 +749,7 @@ msgstr "不合法的密钥,仅支持RSA/DSA格式的密钥" msgid "Password and private key file must be input one" msgstr "密码和私钥, 必须输入一个" -#: assets/forms/user.py:97 assets/models/cmd_filter.py:31 +#: assets/forms/user.py:97 assets/models/cmd_filter.py:32 #: assets/models/user.py:118 assets/templates/assets/_system_user.html:66 #: assets/templates/assets/system_user_detail.html:165 msgid "Command filter" @@ -828,7 +832,7 @@ msgid "Platform" msgstr "系统平台" #: assets/models/asset.py:146 assets/models/authbook.py:27 -#: assets/models/cmd_filter.py:21 assets/models/domain.py:54 +#: assets/models/cmd_filter.py:22 assets/models/domain.py:54 #: assets/models/label.py:22 assets/templates/assets/asset_detail.html:112 msgid "Is active" msgstr "激活" @@ -994,11 +998,11 @@ msgstr "北京电信" msgid "BGP full netcom" msgstr "BGP全网通" -#: assets/models/cmd_filter.py:38 +#: assets/models/cmd_filter.py:39 msgid "Regex" msgstr "正则表达式" -#: assets/models/cmd_filter.py:39 ops/models/command.py:21 +#: assets/models/cmd_filter.py:40 ops/models/command.py:21 #: ops/templates/ops/command_execution_list.html:64 terminal/models.py:163 #: terminal/templates/terminal/command_list.html:28 #: terminal/templates/terminal/command_list.html:68 @@ -1007,19 +1011,19 @@ msgstr "正则表达式" msgid "Command" msgstr "命令" -#: assets/models/cmd_filter.py:44 +#: assets/models/cmd_filter.py:45 msgid "Deny" msgstr "拒绝" -#: assets/models/cmd_filter.py:45 +#: assets/models/cmd_filter.py:46 msgid "Allow" msgstr "允许" -#: assets/models/cmd_filter.py:49 +#: assets/models/cmd_filter.py:50 msgid "Filter" msgstr "过滤器" -#: assets/models/cmd_filter.py:50 +#: assets/models/cmd_filter.py:51 #: assets/templates/assets/cmd_filter_rule_list.html:58 #: audits/templates/audits/login_log_list.html:58 #: perms/templates/perms/remote_app_permission_remote_app.html:54 @@ -1030,26 +1034,26 @@ msgstr "过滤器" msgid "Type" msgstr "类型" -#: assets/models/cmd_filter.py:51 assets/models/user.py:112 +#: assets/models/cmd_filter.py:52 assets/models/user.py:112 #: assets/templates/assets/cmd_filter_rule_list.html:60 msgid "Priority" msgstr "优先级" -#: assets/models/cmd_filter.py:51 +#: assets/models/cmd_filter.py:52 msgid "1-100, the higher will be match first" msgstr "优先级可选范围为1-100,1最低优先级,100最高优先级" -#: assets/models/cmd_filter.py:53 +#: assets/models/cmd_filter.py:54 #: assets/templates/assets/cmd_filter_rule_list.html:59 #: xpack/plugins/license/models.py:29 msgid "Content" msgstr "内容" -#: assets/models/cmd_filter.py:53 +#: assets/models/cmd_filter.py:54 msgid "One line one command" msgstr "每行一个命令" -#: assets/models/cmd_filter.py:64 +#: assets/models/cmd_filter.py:63 msgid "Command filter rule" msgstr "命令过滤规则" @@ -1208,16 +1212,16 @@ msgstr "系统用户" msgid "%(value)s is not an even number" msgstr "%(value)s is not an even number" -#: assets/models/utils.py:43 assets/tasks/const.py:81 +#: assets/models/utils.py:43 assets/tasks/const.py:84 msgid "Unreachable" msgstr "不可达" -#: assets/models/utils.py:44 assets/tasks/const.py:82 +#: assets/models/utils.py:44 assets/tasks/const.py:85 #: assets/templates/assets/asset_list.html:99 msgid "Reachable" msgstr "可连接" -#: assets/models/utils.py:45 assets/tasks/const.py:83 +#: assets/models/utils.py:45 assets/tasks/const.py:86 #: authentication/utils.py:13 xpack/plugins/license/models.py:78 msgid "Unknown" msgstr "未知" @@ -1424,6 +1428,7 @@ msgstr "资产列表" #: assets/templates/assets/_asset_list_modal.html:33 #: assets/templates/assets/_node_tree.html:40 #: ops/templates/ops/command_execution_create.html:49 +#: ops/templates/ops/command_execution_create.html:143 #: users/templates/users/_granted_assets.html:7 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:66 msgid "Loading" @@ -1639,7 +1644,7 @@ msgstr "选择节点" #: assets/templates/assets/system_user_list.html:139 #: authentication/templates/authentication/_mfa_confirm_modal.html:20 #: settings/templates/settings/terminal_setting.html:168 -#: templates/_modal.html:23 terminal/templates/terminal/session_detail.html:108 +#: templates/_modal.html:23 terminal/templates/terminal/session_detail.html:112 #: users/templates/users/user_detail.html:394 #: users/templates/users/user_detail.html:420 #: users/templates/users/user_detail.html:443 @@ -1720,7 +1725,7 @@ msgstr "资产用户" #: assets/templates/assets/asset_asset_user_list.html:47 #: assets/templates/assets/asset_detail.html:144 -#: terminal/templates/terminal/session_detail.html:81 +#: terminal/templates/terminal/session_detail.html:85 #: users/templates/users/user_detail.html:140 #: users/templates/users/user_profile.html:150 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:128 @@ -2984,38 +2989,38 @@ msgid "Task log" msgstr "任务列表" #: ops/templates/ops/command_execution_create.html:90 -#: terminal/templates/terminal/session_detail.html:91 -#: terminal/templates/terminal/session_detail.html:100 +#: terminal/templates/terminal/session_detail.html:95 +#: terminal/templates/terminal/session_detail.html:104 msgid "Go" msgstr "" -#: ops/templates/ops/command_execution_create.html:215 +#: ops/templates/ops/command_execution_create.html:216 msgid "Selected assets" msgstr "已选择资产" -#: ops/templates/ops/command_execution_create.html:218 +#: ops/templates/ops/command_execution_create.html:219 msgid "In total" msgstr "总共" -#: ops/templates/ops/command_execution_create.html:254 +#: ops/templates/ops/command_execution_create.html:256 msgid "" "Select the left asset, select the running system user, execute command in " "batch" msgstr "选择左侧资产, 选择运行的系统用户,批量执行命令" -#: ops/templates/ops/command_execution_create.html:275 +#: ops/templates/ops/command_execution_create.html:299 msgid "Unselected assets" msgstr "没有选中资产" -#: ops/templates/ops/command_execution_create.html:279 +#: ops/templates/ops/command_execution_create.html:303 msgid "No input command" msgstr "没有输入命令" -#: ops/templates/ops/command_execution_create.html:283 +#: ops/templates/ops/command_execution_create.html:307 msgid "No system user was selected" msgstr "没有选择系统用户" -#: ops/templates/ops/command_execution_create.html:328 +#: ops/templates/ops/command_execution_create.html:317 msgid "Pending" msgstr "等待" @@ -3394,21 +3399,21 @@ msgstr "连接LDAP成功" msgid "Match {} s users" msgstr "匹配 {} 个用户" -#: settings/api.py:163 +#: settings/api.py:151 msgid "succeed: {} failed: {} total: {}" msgstr "成功:{} 失败:{} 总数:{}" -#: settings/api.py:185 settings/api.py:221 +#: settings/api.py:173 settings/api.py:209 msgid "" "Error: Account invalid (Please make sure the information such as Access key " "or Secret key is correct)" msgstr "错误:账户无效 (请确保 Access key 或 Secret key 等信息正确)" -#: settings/api.py:191 settings/api.py:227 +#: settings/api.py:179 settings/api.py:215 msgid "Create succeed" msgstr "创建成功" -#: settings/api.py:209 settings/api.py:247 +#: settings/api.py:197 settings/api.py:235 #: settings/templates/settings/terminal_setting.html:154 msgid "Delete succeed" msgstr "删除成功" @@ -3923,11 +3928,11 @@ msgstr "删除失败" msgid "Are you sure about deleting it?" msgstr "您确定删除吗?" -#: settings/utils.py:91 +#: settings/utils.py:98 msgid "Search no entry matched in ou {}" msgstr "在ou:{}中没有匹配条目" -#: settings/utils.py:146 +#: settings/utils.py:172 msgid "The user source is not LDAP" msgstr "用户来源不是LDAP" @@ -4404,7 +4409,7 @@ msgstr "参数" msgid "Export command" msgstr "导出命令" -#: terminal/templates/terminal/command_list.html:191 +#: terminal/templates/terminal/command_list.html:205 msgid "Goto" msgstr "转到" @@ -4418,19 +4423,19 @@ msgstr "会话详情" msgid "Command list" msgstr "命令记录列表" -#: terminal/templates/terminal/session_detail.html:63 +#: terminal/templates/terminal/session_detail.html:67 msgid "There is no command about this session" msgstr "该会话没有命令记录" -#: terminal/templates/terminal/session_detail.html:88 +#: terminal/templates/terminal/session_detail.html:92 msgid "Replay session" msgstr "回放会话" -#: terminal/templates/terminal/session_detail.html:97 +#: terminal/templates/terminal/session_detail.html:101 msgid "Monitor session" msgstr "监控" -#: terminal/templates/terminal/session_detail.html:105 +#: terminal/templates/terminal/session_detail.html:109 msgid "Terminate session" msgstr "终止会话" From 7ff6391801da757019fa2c94562a6f301d2bf007 Mon Sep 17 00:00:00 2001 From: BaiJiangJie Date: Thu, 10 Oct 2019 16:59:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E8=8A=82=E7=82=B9=20API=20=E8=BF=94=E5=9B=9E=E7=9A=84?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/api/node.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/apps/assets/api/node.py b/apps/assets/api/node.py index fbdebabc5..a48d5f00d 100644 --- a/apps/assets/api/node.py +++ b/apps/assets/api/node.py @@ -62,11 +62,8 @@ class NodeViewSet(OrgModelViewSet): def destroy(self, request, *args, **kwargs): node = self.get_object() if node.has_children_or_contains_assets(): - msg = _("Deletion failed " - "and the node contains children or assets") - return Response( - data={'msg': msg}, status=status.HTTP_500_INTERNAL_SERVER_ERROR - ) + msg = _("Deletion failed and the node contains children or assets") + return Response(data={'msg': msg}, status=status.HTTP_403_FORBIDDEN) return super().destroy(request, *args, **kwargs)