mirror of https://github.com/jumpserver/jumpserver
				
				
				
			perf: 修改 app tree
							parent
							
								
									aedd8ba589
								
							
						
					
					
						commit
						4bfa88f01f
					
				| 
						 | 
				
			
			@ -13,13 +13,17 @@ class AppCategory(models.TextChoices):
 | 
			
		|||
    def get_label(cls, category):
 | 
			
		||||
        return dict(cls.choices).get(category, '')
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def is_xpack(cls, category):
 | 
			
		||||
        return category in ['remote_app']
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AppType(models.TextChoices):
 | 
			
		||||
    # db category
 | 
			
		||||
    mysql = 'mysql', 'MySQL'
 | 
			
		||||
    mariadb = 'mariadb', 'MariaDB'
 | 
			
		||||
    oracle = 'oracle', 'Oracle'
 | 
			
		||||
    pgsql = 'postgresql', 'PostgreSQL'
 | 
			
		||||
    mariadb = 'mariadb', 'MariaDB'
 | 
			
		||||
    sqlserver = 'sqlserver', 'SQLServer'
 | 
			
		||||
    redis = 'redis', 'Redis'
 | 
			
		||||
    mongodb = 'mongodb', 'MongoDB'
 | 
			
		||||
| 
						 | 
				
			
			@ -37,9 +41,13 @@ class AppType(models.TextChoices):
 | 
			
		|||
    def category_types_mapper(cls):
 | 
			
		||||
        return {
 | 
			
		||||
            AppCategory.db: [
 | 
			
		||||
                cls.mysql, cls.oracle, cls.pgsql, cls.mariadb, cls.sqlserver, cls.redis, cls.mongodb
 | 
			
		||||
                cls.mysql, cls.oracle, cls.pgsql, cls.mariadb,
 | 
			
		||||
                cls.sqlserver, cls.redis, cls.mongodb
 | 
			
		||||
            ],
 | 
			
		||||
            AppCategory.remote_app: [
 | 
			
		||||
                cls.chrome, cls.mysql_workbench,
 | 
			
		||||
                cls.vmware_client, cls.custom
 | 
			
		||||
            ],
 | 
			
		||||
            AppCategory.remote_app: [cls.chrome, cls.mysql_workbench, cls.vmware_client, cls.custom],
 | 
			
		||||
            AppCategory.cloud: [cls.k8s]
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -66,3 +74,12 @@ class AppType(models.TextChoices):
 | 
			
		|||
    @classmethod
 | 
			
		||||
    def cloud_types(cls):
 | 
			
		||||
        return [tp.value for tp in cls.category_types_mapper()[AppCategory.cloud]]
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def is_xpack(cls, tp):
 | 
			
		||||
        tp_category_mapper = cls.type_category_mapper()
 | 
			
		||||
        category = tp_category_mapper[tp]
 | 
			
		||||
 | 
			
		||||
        if AppCategory.is_xpack(category):
 | 
			
		||||
            return True
 | 
			
		||||
        return tp in ['oracle', 'postgresql', 'sqlserver']
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@ from urllib.parse import urlencode, parse_qsl
 | 
			
		|||
 | 
			
		||||
from django.db import models
 | 
			
		||||
from django.utils.translation import ugettext_lazy as _
 | 
			
		||||
from django.conf import settings
 | 
			
		||||
 | 
			
		||||
from orgs.mixins.models import OrgModelMixin
 | 
			
		||||
from common.mixins import CommonModelMixin
 | 
			
		||||
| 
						 | 
				
			
			@ -79,6 +80,8 @@ class ApplicationTreeNodeMixin:
 | 
			
		|||
        nodes = []
 | 
			
		||||
        categories = const.AppType.category_types_mapper().keys()
 | 
			
		||||
        for category in categories:
 | 
			
		||||
            if not settings.XPACK_ENABLED and const.AppCategory.is_xpack(category):
 | 
			
		||||
                continue
 | 
			
		||||
            i = cls.create_tree_id(pid, 'category', category.value)
 | 
			
		||||
            node = cls.create_choice_node(
 | 
			
		||||
                category, i, pid=pid, tp='category',
 | 
			
		||||
| 
						 | 
				
			
			@ -97,6 +100,8 @@ class ApplicationTreeNodeMixin:
 | 
			
		|||
        type_category_mapper = const.AppType.type_category_mapper()
 | 
			
		||||
        types = const.AppType.type_category_mapper().keys()
 | 
			
		||||
        for tp in types:
 | 
			
		||||
            if not settings.XPACK_ENABLED and const.AppType.is_xpack(tp):
 | 
			
		||||
                continue
 | 
			
		||||
            category = type_category_mapper.get(tp)
 | 
			
		||||
            pid = cls.create_tree_id(pid, 'category', category.value)
 | 
			
		||||
            i = cls.create_tree_id(pid, 'type', tp.value)
 | 
			
		||||
| 
						 | 
				
			
			@ -155,6 +160,8 @@ class ApplicationTreeNodeMixin:
 | 
			
		|||
 | 
			
		||||
        # 应用的节点
 | 
			
		||||
        for app in queryset:
 | 
			
		||||
            if not settings.XPACK_ENABLED and const.AppType.is_xpack(app.type):
 | 
			
		||||
                continue
 | 
			
		||||
            node = app.as_tree_node(root_node.id)
 | 
			
		||||
            tree_nodes.append(node)
 | 
			
		||||
        return tree_nodes
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue