mirror of https://github.com/jumpserver/jumpserver
[Bugfix] 修复授权树列表和资产树列表不同的bug
parent
d5debc375e
commit
16aa42a861
|
@ -108,18 +108,18 @@ class NodeChildrenApi(mixins.ListModelMixin, generics.CreateAPIView):
|
||||||
return node
|
return node
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = []
|
queryset = set()
|
||||||
query_all = self.request.query_params.get("all")
|
query_all = self.request.query_params.get("all")
|
||||||
query_assets = self.request.query_params.get('assets')
|
query_assets = self.request.query_params.get('assets')
|
||||||
node = self.get_object()
|
node = self.get_object()
|
||||||
if node == Node.root():
|
if node == Node.root():
|
||||||
queryset.append(node)
|
queryset.add(node)
|
||||||
if query_all:
|
if query_all:
|
||||||
children = node.get_all_children()
|
children = node.get_all_children()
|
||||||
else:
|
else:
|
||||||
children = node.get_children()
|
children = node.get_children()
|
||||||
|
|
||||||
queryset.extend(list(children))
|
queryset.update(set(children))
|
||||||
if query_assets:
|
if query_assets:
|
||||||
assets = node.get_assets()
|
assets = node.get_assets()
|
||||||
for asset in assets:
|
for asset in assets:
|
||||||
|
@ -127,8 +127,9 @@ class NodeChildrenApi(mixins.ListModelMixin, generics.CreateAPIView):
|
||||||
node_fake.id = asset.id
|
node_fake.id = asset.id
|
||||||
node_fake.parent = node
|
node_fake.parent = node
|
||||||
node_fake.value = asset.hostname
|
node_fake.value = asset.hostname
|
||||||
node_fake.is_asset = True
|
node_fake.is_node = False
|
||||||
queryset.append(node_fake)
|
queryset.add(node_fake)
|
||||||
|
queryset = sorted(queryset, key=lambda x: x.is_node, reverse=True)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Node(models.Model):
|
||||||
child_mark = models.IntegerField(default=0)
|
child_mark = models.IntegerField(default=0)
|
||||||
date_create = models.DateTimeField(auto_now_add=True)
|
date_create = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
is_asset = False
|
is_node = True
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.full_value
|
return self.full_value
|
||||||
|
|
|
@ -48,7 +48,7 @@ class NodeSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Node
|
model = Node
|
||||||
fields = ['id', 'key', 'value', 'parent', 'assets_amount', 'is_asset']
|
fields = ['id', 'key', 'value', 'parent', 'assets_amount', 'is_node']
|
||||||
list_serializer_class = BulkListSerializer
|
list_serializer_class = BulkListSerializer
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
|
@ -78,12 +78,12 @@ var zTree, table, show = 0;
|
||||||
function onSelected(event, treeNode) {
|
function onSelected(event, treeNode) {
|
||||||
setCookie('node_selected', treeNode.id);
|
setCookie('node_selected', treeNode.id);
|
||||||
var url = table.ajax.url();
|
var url = table.ajax.url();
|
||||||
if (treeNode.is_asset) {
|
if (treeNode.is_node) {
|
||||||
url = setUrlParam(url, 'node', "");
|
|
||||||
url = setUrlParam(url, 'asset', treeNode.id)
|
|
||||||
} else {
|
|
||||||
url = setUrlParam(url, 'asset', "");
|
url = setUrlParam(url, 'asset', "");
|
||||||
url = setUrlParam(url, 'node', treeNode.id)
|
url = setUrlParam(url, 'node', treeNode.id)
|
||||||
|
} else {
|
||||||
|
url = setUrlParam(url, 'node', "");
|
||||||
|
url = setUrlParam(url, 'asset', treeNode.id)
|
||||||
}
|
}
|
||||||
setCookie('node_selected', treeNode.id);
|
setCookie('node_selected', treeNode.id);
|
||||||
table.ajax.url(url);
|
table.ajax.url(url);
|
||||||
|
@ -113,14 +113,14 @@ function filter(treeId, parentNode, childNodes) {
|
||||||
$.each(childNodes, function (index, value) {
|
$.each(childNodes, function (index, value) {
|
||||||
value["pId"] = value["parent"];
|
value["pId"] = value["parent"];
|
||||||
value["name"] = value["value"];
|
value["name"] = value["value"];
|
||||||
value["isParent"] = value["assets_amount"] !== 0;
|
value["isParent"] = value["is_node"];
|
||||||
value["iconSkin"] = value["is_asset"] ? "file" : null;
|
value["iconSkin"] = value["is_node"] ? null : 'file';
|
||||||
});
|
});
|
||||||
return childNodes;
|
return childNodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
function beforeAsync(treeId, treeNode) {
|
function beforeAsync(treeId, treeNode) {
|
||||||
return true;
|
return treeNode.is_node
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeLabel(data) {
|
function makeLabel(data) {
|
||||||
|
@ -226,7 +226,7 @@ function initTree() {
|
||||||
},
|
},
|
||||||
async: {
|
async: {
|
||||||
enable: true,
|
enable: true,
|
||||||
url: "{% url 'api-assets:node-children-2' %}?assets=1",
|
url: "{% url 'api-assets:node-children-2' %}?assets=1&all=1",
|
||||||
autoParam:["id", "name=n", "level=lv"],
|
autoParam:["id", "name=n", "level=lv"],
|
||||||
dataFilter: filter,
|
dataFilter: filter,
|
||||||
type: 'get'
|
type: 'get'
|
||||||
|
@ -238,12 +238,13 @@ function initTree() {
|
||||||
};
|
};
|
||||||
|
|
||||||
var zNodes = [];
|
var zNodes = [];
|
||||||
$.get("{% url 'api-assets:node-children-2' %}", function(data, status){
|
$.get("{% url 'api-assets:node-children-2' %}?assets=1&all=1", function(data, status){
|
||||||
$.each(data, function (index, value) {
|
$.each(data, function (index, value) {
|
||||||
value["pId"] = value["parent"];
|
value["pId"] = value["parent"];
|
||||||
value["isParent"] = value["assets_amount"] !== 0;
|
|
||||||
value["name"] = value["value"];
|
value["name"] = value["value"];
|
||||||
value["open"] = value["key"] === "0";
|
value["open"] = value["key"] === "0";
|
||||||
|
value["isParent"] = value["is_node"];
|
||||||
|
value["iconSkin"] = value["is_node"] ? null : 'file';
|
||||||
});
|
});
|
||||||
zNodes = data;
|
zNodes = data;
|
||||||
{#$.fn.zTree.init($("#assetTree"), setting);#}
|
{#$.fn.zTree.init($("#assetTree"), setting);#}
|
||||||
|
@ -286,10 +287,10 @@ $(document).ready(function(){
|
||||||
var _nodes = [];
|
var _nodes = [];
|
||||||
var _assets = [];
|
var _assets = [];
|
||||||
$.each(nodes, function (id, node) {
|
$.each(nodes, function (id, node) {
|
||||||
if (node.is_asset) {
|
if (node.is_node) {
|
||||||
_assets.push(node.id)
|
|
||||||
} else {
|
|
||||||
_nodes.push(node.id)
|
_nodes.push(node.id)
|
||||||
|
} else {
|
||||||
|
_assets.push(node.id)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
url += "?assets=" + _assets.join(",") + "&nodes=" + _nodes.join(",");
|
url += "?assets=" + _assets.join(",") + "&nodes=" + _nodes.join(",");
|
||||||
|
|
Loading…
Reference in New Issue