mirror of https://github.com/jumpserver/jumpserver
				
				
				
			[Update] 修改获取资产的逻辑
							parent
							
								
									28afd1f6f9
								
							
						
					
					
						commit
						5055a9f352
					
				| 
						 | 
				
			
			@ -302,13 +302,19 @@ class NodeAssetsMixin:
 | 
			
		|||
        return Asset.objects.filter(nodes__key__regex=pattern).distinct()
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def get_nodes_all_assets(cls, nodes_keys, extra_assets_ids=None):
 | 
			
		||||
        from .asset import Asset
 | 
			
		||||
    def get_nodes_all_assets_ids(cls, nodes_keys):
 | 
			
		||||
        nodes_keys = cls.clean_children_keys(nodes_keys)
 | 
			
		||||
        assets_ids = set()
 | 
			
		||||
        for key in nodes_keys:
 | 
			
		||||
            node_assets_ids = cls.tree().all_assets(key)
 | 
			
		||||
            assets_ids.update(set(node_assets_ids))
 | 
			
		||||
        return assets_ids
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def get_nodes_all_assets(cls, nodes_keys, extra_assets_ids=None):
 | 
			
		||||
        from .asset import Asset
 | 
			
		||||
        nodes_keys = cls.clean_children_keys(nodes_keys)
 | 
			
		||||
        assets_ids = cls.get_nodes_all_assets_ids(nodes_keys)
 | 
			
		||||
        if extra_assets_ids:
 | 
			
		||||
            assets_ids.update(set(extra_assets_ids))
 | 
			
		||||
        return Asset.objects.filter(id__in=assets_ids)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -148,18 +148,12 @@ class SystemUser(AssetUser):
 | 
			
		|||
        return True, None
 | 
			
		||||
 | 
			
		||||
    def get_all_assets(self):
 | 
			
		||||
        from .node import Node
 | 
			
		||||
        args = [Q(systemuser=self)]
 | 
			
		||||
        pattern = set()
 | 
			
		||||
        from assets.models import Node
 | 
			
		||||
        nodes_keys = self.nodes.all().values_list('key', flat=True)
 | 
			
		||||
        nodes_keys = Node.clean_children_keys(nodes_keys)
 | 
			
		||||
        for key in nodes_keys:
 | 
			
		||||
            pattern.add(r'^{0}$|^{0}:'.format(key))
 | 
			
		||||
        pattern = '|'.join(list(pattern))
 | 
			
		||||
        if pattern:
 | 
			
		||||
            args.append(Q(nodes__key__regex=pattern))
 | 
			
		||||
        args = reduce(lambda x, y: x | y, args)
 | 
			
		||||
        assets = Asset.objects.filter(args).distinct()
 | 
			
		||||
        assets_ids = set(self.assets.all().values_list('id', flat=True))
 | 
			
		||||
        nodes_assets_ids = Node.get_nodes_all_assets_ids(nodes_keys)
 | 
			
		||||
        assets_ids.update(nodes_assets_ids)
 | 
			
		||||
        assets = Asset.objects.filter(id__in=assets_ids)
 | 
			
		||||
        return assets
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -94,15 +94,10 @@ class AssetPermission(BasePermission):
 | 
			
		|||
        )
 | 
			
		||||
 | 
			
		||||
    def get_all_assets(self):
 | 
			
		||||
        args = [Q(granted_by_permissions=self)]
 | 
			
		||||
        pattern = set()
 | 
			
		||||
        from assets.models import Node
 | 
			
		||||
        nodes_keys = self.nodes.all().values_list('key', flat=True)
 | 
			
		||||
        nodes_keys = Node.clean_children_keys(nodes_keys)
 | 
			
		||||
        for key in nodes_keys:
 | 
			
		||||
            pattern.add(r'^{0}$|^{0}:'.format(key))
 | 
			
		||||
        pattern = '|'.join(list(pattern))
 | 
			
		||||
        if pattern:
 | 
			
		||||
            args.append(Q(nodes__key__regex=pattern))
 | 
			
		||||
        args = reduce(lambda x, y: x | y, args)
 | 
			
		||||
        assets = Asset.objects.filter(args).distinct()
 | 
			
		||||
        assets_ids = set(self.assets.all().values_list('id', flat=True))
 | 
			
		||||
        nodes_assets_ids = Node.get_nodes_all_assets_ids(nodes_keys)
 | 
			
		||||
        assets_ids.update(nodes_assets_ids)
 | 
			
		||||
        assets = Asset.objects.filter(id__in=assets_ids)
 | 
			
		||||
        return assets
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue