mirror of https://github.com/jumpserver/jumpserver
fix: 授权树节点排序
parent
06a4e0d395
commit
2f8042141c
|
@ -488,11 +488,12 @@ class UserGrantedAssetsQueryUtils(UserGrantedUtilsBase):
|
|||
|
||||
if granted_status == NodeFrom.granted:
|
||||
assets = Asset.objects.order_by().filter(nodes__id=node.id)
|
||||
return assets
|
||||
elif granted_status == NodeFrom.asset:
|
||||
return self._get_indirect_granted_node_assets(node.id)
|
||||
assets = self._get_indirect_granted_node_assets(node.id)
|
||||
else:
|
||||
return Asset.objects.none()
|
||||
assets = Asset.objects.none()
|
||||
assets = assets.order_by('hostname')
|
||||
return assets
|
||||
|
||||
def _get_indirect_granted_node_assets(self, id) -> AssetQuerySet:
|
||||
assets = Asset.objects.order_by().filter(nodes__id=id).distinct() & self.get_direct_granted_assets()
|
||||
|
@ -538,6 +539,10 @@ class UserGrantedAssetsQueryUtils(UserGrantedUtilsBase):
|
|||
|
||||
|
||||
class UserGrantedNodesQueryUtils(UserGrantedUtilsBase):
|
||||
def sort(self, nodes):
|
||||
nodes = sorted(nodes, key=lambda x: x.value)
|
||||
return nodes
|
||||
|
||||
def get_node_children(self, key):
|
||||
if not key:
|
||||
return self.get_top_level_nodes()
|
||||
|
@ -545,11 +550,13 @@ class UserGrantedNodesQueryUtils(UserGrantedUtilsBase):
|
|||
node = PermNode.objects.get(key=key)
|
||||
granted_status = node.get_granted_status(self.user)
|
||||
if granted_status == NodeFrom.granted:
|
||||
return PermNode.objects.filter(parent_key=key)
|
||||
nodes = PermNode.objects.filter(parent_key=key)
|
||||
elif granted_status in (NodeFrom.asset, NodeFrom.child):
|
||||
return self.get_indirect_granted_node_children(key)
|
||||
nodes = self.get_indirect_granted_node_children(key)
|
||||
else:
|
||||
return PermNode.objects.none()
|
||||
nodes = PermNode.objects.none()
|
||||
nodes = self.sort(nodes)
|
||||
return nodes
|
||||
|
||||
def get_indirect_granted_node_children(self, key):
|
||||
"""
|
||||
|
@ -571,7 +578,8 @@ class UserGrantedNodesQueryUtils(UserGrantedUtilsBase):
|
|||
|
||||
def get_top_level_nodes(self):
|
||||
nodes = self.get_special_nodes()
|
||||
nodes.extend(self.get_indirect_granted_node_children(''))
|
||||
real_nodes = self.get_indirect_granted_node_children('')
|
||||
nodes.extend(self.sort(real_nodes))
|
||||
return nodes
|
||||
|
||||
def get_ungrouped_node(self):
|
||||
|
|
Loading…
Reference in New Issue