From 3451c2b418db54bd559003808bdaeaa574e12fe9 Mon Sep 17 00:00:00 2001 From: BaiJiangJie <32935519+BaiJiangJie@users.noreply.github.com> Date: Wed, 17 Jul 2019 12:10:14 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E8=A7=A3=E5=86=B3=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E8=B5=84=E4=BA=A7=E6=98=BE=E7=A4=BA=E7=A6=81=E7=94=A8=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E7=9A=84=E9=97=AE=E9=A2=98=20(#2975)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Update] 解决授权资产显示禁用资产的问题 * [Bugfix] 解决资产更新页面取消激活失败的问题 * [Bugfix] 解决资产详情页面禁用资产时会清除协议的问题 * [Bugfix] 解决创建/更新管理用户、系统用户提交密钥错误时报错的问题 --- apps/assets/serializers/asset.py | 2 +- apps/assets/serializers/base.py | 2 ++ apps/assets/templates/assets/asset_create.html | 8 ++------ apps/perms/utils/asset_permission.py | 6 +++--- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/apps/assets/serializers/asset.py b/apps/assets/serializers/asset.py index 5fdb3a362..0207f4e7d 100644 --- a/apps/assets/serializers/asset.py +++ b/apps/assets/serializers/asset.py @@ -112,7 +112,7 @@ class AssetSerializer(BulkOrgResourceModelSerializer): protocol = protocols_data[0].split('/') validated_data["protocol"] = protocol[0] validated_data["port"] = int(protocol[1]) - if validated_data: + if protocols_data: validated_data["protocols"] = ' '.join(protocols_data) def create(self, validated_data): diff --git a/apps/assets/serializers/base.py b/apps/assets/serializers/base.py index ca4aa7502..257bb95ab 100644 --- a/apps/assets/serializers/base.py +++ b/apps/assets/serializers/base.py @@ -1,7 +1,9 @@ # -*- coding: utf-8 -*- # +from django.utils.translation import ugettext as _ from rest_framework import serializers + from common.utils import ssh_pubkey_gen, validate_ssh_private_key diff --git a/apps/assets/templates/assets/asset_create.html b/apps/assets/templates/assets/asset_create.html index 1b5636be5..6df7ff862 100644 --- a/apps/assets/templates/assets/asset_create.html +++ b/apps/assets/templates/assets/asset_create.html @@ -216,6 +216,8 @@ $(document).ready(function () { var form = $("form"); var protocols = {}; var data = form.serializeObject(); + objectAttrsIsBool(data, ['is_active']); + objectAttrsIsList(data, ['nodes', 'labels']); $.each(data, function (k, v) { if (k.startsWith("form")){ delete data[k]; @@ -233,12 +235,6 @@ $(document).ready(function () { return v.name + '/' + v.port }); data["protocols"] = protocols; - if (typeof data.labels === "string") { - data["labels"] = [data["labels"]]; - } - if (typeof data["nodes"] == "string") { - data["nodes"] = [data["nodes"]] - } var props = { url: the_url, data: data, diff --git a/apps/perms/utils/asset_permission.py b/apps/perms/utils/asset_permission.py index c437753b6..2c2eaac05 100644 --- a/apps/perms/utils/asset_permission.py +++ b/apps/perms/utils/asset_permission.py @@ -499,7 +499,7 @@ class AssetPermissionUtil(AssetPermissionCacheMixin): if pattern: assets_ids = Asset.objects.filter( nodes__key__regex=pattern - ).values_list("id", flat=True).distinct() + ).valid().values_list("id", flat=True).distinct() else: assets_ids = [] self.tree.add_assets_without_system_users(assets_ids) @@ -523,8 +523,8 @@ class AssetPermissionUtil(AssetPermissionCacheMixin): assets_ids = defaultdict(lambda: defaultdict(int)) for perm in self.permissions: actions = [perm.actions] - _assets_ids = [a.id for a in perm.assets.all()] - system_users_ids = [s.id for s in perm.system_users.all()] + _assets_ids = perm.assets.valid().values_list("id", flat=True) + system_users_ids = perm.system_users.values_list("id", flat=True) iterable = itertools.product(_assets_ids, system_users_ids, actions) for asset_id, sys_id, action in iterable: assets_ids[asset_id][sys_id] |= action