mirror of https://github.com/jumpserver/jumpserver
				
				
				
			perf: 添加 category node view
							parent
							
								
									8dfb8eeb75
								
							
						
					
					
						commit
						698ea3f2ea
					
				| 
						 | 
				
			
			@ -27,6 +27,7 @@ from ..tasks import (
 | 
			
		|||
    check_node_assets_amount_task
 | 
			
		||||
)
 | 
			
		||||
from .. import serializers
 | 
			
		||||
from ..const import AllTypes
 | 
			
		||||
from .mixin import SerializeToTreeNodeMixin
 | 
			
		||||
from assets.locks import NodeAddChildrenLock
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -197,6 +198,14 @@ class NodeChildrenAsTreeApi(SerializeToTreeNodeMixin, NodeChildrenApi):
 | 
			
		|||
        return self.serialize_assets(assets, self.instance.key)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CategoryTreeApi(SerializeToTreeNodeMixin, generics.ListAPIView):
 | 
			
		||||
    def list(self, request, *args, **kwargs):
 | 
			
		||||
        category_types = AllTypes.category_types()
 | 
			
		||||
        nodes = self.get_queryset().order_by('value')
 | 
			
		||||
        nodes = self.serialize_nodes(nodes, with_asset_amount=True)
 | 
			
		||||
        return Response(data=nodes)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class NodeAssetsApi(generics.ListAPIView):
 | 
			
		||||
    serializer_class = serializers.AssetSerializer
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ from common.db.models import IncludesTextChoicesMeta
 | 
			
		|||
 | 
			
		||||
__all__ = [
 | 
			
		||||
    'Category', 'HostTypes', 'NetworkTypes', 'DatabaseTypes',
 | 
			
		||||
    'RemoteAppTypes', 'CloudTypes', 'Protocol', 'AllTypes',
 | 
			
		||||
    'WebTypes', 'CloudTypes', 'Protocol', 'AllTypes',
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -19,8 +19,8 @@ class Category(PlatformMixin, models.TextChoices):
 | 
			
		|||
    HOST = 'host', _('Host')
 | 
			
		||||
    NETWORK = 'network', _("NetworkDevice")
 | 
			
		||||
    DATABASE = 'database', _("Database")
 | 
			
		||||
    REMOTE_APP = 'remote_app', _("Remote app")
 | 
			
		||||
    CLOUD = 'cloud', _("Clouding")
 | 
			
		||||
    WEB = 'web', _("Web")
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def platform_limits(cls):
 | 
			
		||||
| 
						 | 
				
			
			@ -36,8 +36,8 @@ class Category(PlatformMixin, models.TextChoices):
 | 
			
		|||
            cls.DATABASE: {
 | 
			
		||||
                'has_domain': True
 | 
			
		||||
            },
 | 
			
		||||
            cls.REMOTE_APP: {
 | 
			
		||||
                'has_domain': True
 | 
			
		||||
            cls.WEB: {
 | 
			
		||||
                'has_domain': False,
 | 
			
		||||
            },
 | 
			
		||||
            cls.CLOUD: {
 | 
			
		||||
                'has_domain': False,
 | 
			
		||||
| 
						 | 
				
			
			@ -97,11 +97,8 @@ class DatabaseTypes(PlatformMixin, models.TextChoices):
 | 
			
		|||
        return meta
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RemoteAppTypes(PlatformMixin, models.TextChoices):
 | 
			
		||||
    CHROME = 'chrome', 'Chrome'
 | 
			
		||||
    VSPHERE = 'vmware_client', 'vSphere client'
 | 
			
		||||
    MYSQL_WORKBENCH = 'mysql_workbench', 'MySQL workbench'
 | 
			
		||||
    GENERAL_REMOTE_APP = 'general_remote_app', _("Custom")
 | 
			
		||||
class WebTypes(PlatformMixin, models.TextChoices):
 | 
			
		||||
    General = 'general', 'General'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CloudTypes(PlatformMixin, models.TextChoices):
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +109,7 @@ class AllTypes(metaclass=IncludesTextChoicesMeta):
 | 
			
		|||
    choices: list
 | 
			
		||||
    includes = [
 | 
			
		||||
        HostTypes, NetworkTypes, DatabaseTypes,
 | 
			
		||||
        RemoteAppTypes, CloudTypes
 | 
			
		||||
        WebTypes, CloudTypes
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
| 
						 | 
				
			
			@ -140,7 +137,7 @@ class AllTypes(metaclass=IncludesTextChoicesMeta):
 | 
			
		|||
            (Category.HOST, HostTypes),
 | 
			
		||||
            (Category.NETWORK, NetworkTypes),
 | 
			
		||||
            (Category.DATABASE, DatabaseTypes),
 | 
			
		||||
            (Category.REMOTE_APP, RemoteAppTypes),
 | 
			
		||||
            (Category.WEB, WebTypes),
 | 
			
		||||
            (Category.CLOUD, CloudTypes)
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue