Unverified Commit 37be53f3 authored by 老广's avatar 老广 Committed by GitHub

Merge pull request #3004 from jumpserver/dev

修改显示节点下的所有资产
parents 277bbc07 5f59c729
...@@ -14,13 +14,14 @@ __all__ = [ ...@@ -14,13 +14,14 @@ __all__ = [
class NodeSerializer(BulkOrgResourceModelSerializer): class NodeSerializer(BulkOrgResourceModelSerializer):
assets_amount = serializers.IntegerField(read_only=True) assets_amount = serializers.IntegerField(read_only=True)
name = serializers.ReadOnlyField(source='value')
class Meta: class Meta:
model = Node model = Node
only_fields = ['id', 'key', 'value', 'org_id'] only_fields = ['id', 'key', 'value', 'org_id']
fields = only_fields + ['assets_amount'] fields = only_fields + ['name', 'assets_amount']
read_only_fields = [ read_only_fields = [
'key', 'assets_amount', 'org_id', 'key', 'name', 'assets_amount', 'org_id',
] ]
def validate_value(self, data): def validate_value(self, data):
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<script> <script>
var treeUrl = "{% url 'api-perms:my-nodes-as-tree' %}?&cache_policy=1"; var treeUrl = "{% url 'api-perms:my-nodes-as-tree' %}?&cache_policy=1";
var assetTableUrl = "{% url 'api-perms:my-assets' %}?cache_policy=1"; var assetTableUrl = "{% url 'api-perms:my-assets' %}?cache_policy=1";
var selectUrl = '{% url "api-perms:my-node-assets" node_id=DEFAULT_PK %}?cache_policy=1'; var selectUrl = '{% url "api-perms:my-node-assets" node_id=DEFAULT_PK %}?cache_policy=1&all=1';
var showAssetHref = false; // Need input default true var showAssetHref = false; // Need input default true
var actions = { var actions = {
targets: 4, createdCell: function (td, cellData) { targets: 4, createdCell: function (td, cellData) {
......
...@@ -88,13 +88,18 @@ class UserGrantedNodeAssetsApi(UserPermissionCacheMixin, GrantAssetsMixin, ListA ...@@ -88,13 +88,18 @@ class UserGrantedNodeAssetsApi(UserPermissionCacheMixin, GrantAssetsMixin, ListA
def get_queryset(self): def get_queryset(self):
user = self.get_object() user = self.get_object()
query_all = self.request.query_params.get("all", "0") == "1"
self.util = AssetPermissionUtil(user, cache_policy=self.cache_policy) self.util = AssetPermissionUtil(user, cache_policy=self.cache_policy)
key = self.get_node_key() key = self.get_node_key()
nodes_items = self.util.get_nodes_with_assets() nodes_items = self.util.get_nodes_with_assets()
assets_system_users = {} assets_system_users = {}
if query_all:
k = "all_assets"
else:
k = "assets"
for item in nodes_items: for item in nodes_items:
if item["key"] == key: if item["key"] == key:
assets_system_users = item["assets"] assets_system_users = item[k]
break break
assets = [] assets = []
for asset_id, system_users in assets_system_users.items(): for asset_id, system_users in assets_system_users.items():
......
...@@ -44,7 +44,7 @@ class AssetGrantedSerializer(serializers.ModelSerializer): ...@@ -44,7 +44,7 @@ class AssetGrantedSerializer(serializers.ModelSerializer):
model = Asset model = Asset
only_fields = [ only_fields = [
"id", "hostname", "ip", "protocols", "os", 'domain', "id", "hostname", "ip", "protocols", "os", 'domain',
"platform", "org_id", "platform", "comment", "org_id",
] ]
fields = only_fields + ['system_users_granted', 'system_users_join', "org_name"] fields = only_fields + ['system_users_granted', 'system_users_join', "org_name"]
read_only_fields = fields read_only_fields = fields
......
...@@ -203,14 +203,16 @@ class GenerateTree: ...@@ -203,14 +203,16 @@ class GenerateTree:
nodes = [] nodes = []
for key, values in nodes_with_assets_amount.items(): for key, values in nodes_with_assets_amount.items():
assets = {asset_id: self.assets.get(asset_id) for asset_id in values["assets"]} assets = {asset_id: self.assets.get(asset_id) for asset_id in values["assets"]}
all_assets = {asset_id: self.assets.get(asset_id) for asset_id in values["all_assets"]}
nodes.append({ nodes.append({
"key": key, "assets": assets, "key": key, "assets": assets, "all_assets": all_assets,
"assets_amount": values["assets_amount"] "assets_amount": values["assets_amount"]
}) })
# 如果返回空节点,页面构造授权资产树报错 # 如果返回空节点,页面构造授权资产树报错
if not nodes: if not nodes:
nodes.append({ nodes.append({
"key": const.EMPTY_NODE_KEY, "assets": {}, "assets_amount": 0 "key": const.EMPTY_NODE_KEY, "assets": {}, "assets_amount": 0,
"all_assets": {},
}) })
nodes.sort(key=lambda n: self.key_sort(n["key"])) nodes.sort(key=lambda n: self.key_sort(n["key"]))
self._nodes_with_assets = nodes self._nodes_with_assets = nodes
......
...@@ -102,7 +102,8 @@ class PermAssetsAmountUtil(PermStackUtilMixin): ...@@ -102,7 +102,8 @@ class PermAssetsAmountUtil(PermStackUtilMixin):
self.debug("出栈: {} 栈顶: {}".format( self.debug("出栈: {} 栈顶: {}".format(
_node['key'], self.stack.top['key'] if self.stack.top else None) _node['key'], self.stack.top['key'] if self.stack.top else None)
) )
_node["assets_amount"] = len(_node["all_assets"] | _node["assets"]) _node["all_assets"] = _node["all_assets"] | _node["assets"]
_node["assets_amount"] = len(_node["all_assets"])
self._nodes[_node.pop("key")] = _node self._nodes[_node.pop("key")] = _node
if not self.stack.top: if not self.stack.top:
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
{% block custom_foot_js %} {% block custom_foot_js %}
<script> <script>
var assetTableUrl = "{% url 'api-perms:user-assets' pk=object.id %}?cache_policy=1"; var assetTableUrl = "{% url 'api-perms:user-assets' pk=object.id %}?cache_policy=1";
var selectUrl = '{% url "api-perms:user-node-assets" pk=object.id node_id=DEFAULT_PK %}?cache_policy=1'; var selectUrl = '{% url "api-perms:user-node-assets" pk=object.id node_id=DEFAULT_PK %}?cache_policy=1&all=1';
var treeUrl = "{% url 'api-perms:user-nodes-as-tree' pk=object.id %}?&cache_policy=1"; var treeUrl = "{% url 'api-perms:user-nodes-as-tree' pk=object.id %}?&cache_policy=1";
$(document).ready(function () { $(document).ready(function () {
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<script> <script>
var treeUrl = "{% url 'api-perms:user-group-nodes-as-tree' pk=object.id %}?cache_policy=1"; var treeUrl = "{% url 'api-perms:user-group-nodes-as-tree' pk=object.id %}?cache_policy=1";
var assetTableUrl = "{% url 'api-perms:user-group-assets' pk=object.id %}?cache_policy=1"; var assetTableUrl = "{% url 'api-perms:user-group-assets' pk=object.id %}?cache_policy=1";
var selectUrl = '{% url "api-perms:user-group-node-assets" pk=object.id node_id=DEFAULT_PK %}?cache_policy=1'; var selectUrl = '{% url "api-perms:user-group-node-assets" pk=object.id node_id=DEFAULT_PK %}?cache_policy=1&all=1';
var showAssetHref = true; // Need input default true var showAssetHref = true; // Need input default true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment