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):
|
def get_label(cls, category):
|
||||||
return dict(cls.choices).get(category, '')
|
return dict(cls.choices).get(category, '')
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def is_xpack(cls, category):
|
||||||
|
return category in ['remote_app']
|
||||||
|
|
||||||
|
|
||||||
class AppType(models.TextChoices):
|
class AppType(models.TextChoices):
|
||||||
# db category
|
# db category
|
||||||
mysql = 'mysql', 'MySQL'
|
mysql = 'mysql', 'MySQL'
|
||||||
|
mariadb = 'mariadb', 'MariaDB'
|
||||||
oracle = 'oracle', 'Oracle'
|
oracle = 'oracle', 'Oracle'
|
||||||
pgsql = 'postgresql', 'PostgreSQL'
|
pgsql = 'postgresql', 'PostgreSQL'
|
||||||
mariadb = 'mariadb', 'MariaDB'
|
|
||||||
sqlserver = 'sqlserver', 'SQLServer'
|
sqlserver = 'sqlserver', 'SQLServer'
|
||||||
redis = 'redis', 'Redis'
|
redis = 'redis', 'Redis'
|
||||||
mongodb = 'mongodb', 'MongoDB'
|
mongodb = 'mongodb', 'MongoDB'
|
||||||
|
@ -37,9 +41,13 @@ class AppType(models.TextChoices):
|
||||||
def category_types_mapper(cls):
|
def category_types_mapper(cls):
|
||||||
return {
|
return {
|
||||||
AppCategory.db: [
|
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]
|
AppCategory.cloud: [cls.k8s]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,3 +74,12 @@ class AppType(models.TextChoices):
|
||||||
@classmethod
|
@classmethod
|
||||||
def cloud_types(cls):
|
def cloud_types(cls):
|
||||||
return [tp.value for tp in cls.category_types_mapper()[AppCategory.cloud]]
|
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.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
from orgs.mixins.models import OrgModelMixin
|
from orgs.mixins.models import OrgModelMixin
|
||||||
from common.mixins import CommonModelMixin
|
from common.mixins import CommonModelMixin
|
||||||
|
@ -79,6 +80,8 @@ class ApplicationTreeNodeMixin:
|
||||||
nodes = []
|
nodes = []
|
||||||
categories = const.AppType.category_types_mapper().keys()
|
categories = const.AppType.category_types_mapper().keys()
|
||||||
for category in categories:
|
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)
|
i = cls.create_tree_id(pid, 'category', category.value)
|
||||||
node = cls.create_choice_node(
|
node = cls.create_choice_node(
|
||||||
category, i, pid=pid, tp='category',
|
category, i, pid=pid, tp='category',
|
||||||
|
@ -97,6 +100,8 @@ class ApplicationTreeNodeMixin:
|
||||||
type_category_mapper = const.AppType.type_category_mapper()
|
type_category_mapper = const.AppType.type_category_mapper()
|
||||||
types = const.AppType.type_category_mapper().keys()
|
types = const.AppType.type_category_mapper().keys()
|
||||||
for tp in types:
|
for tp in types:
|
||||||
|
if not settings.XPACK_ENABLED and const.AppType.is_xpack(tp):
|
||||||
|
continue
|
||||||
category = type_category_mapper.get(tp)
|
category = type_category_mapper.get(tp)
|
||||||
pid = cls.create_tree_id(pid, 'category', category.value)
|
pid = cls.create_tree_id(pid, 'category', category.value)
|
||||||
i = cls.create_tree_id(pid, 'type', tp.value)
|
i = cls.create_tree_id(pid, 'type', tp.value)
|
||||||
|
@ -155,6 +160,8 @@ class ApplicationTreeNodeMixin:
|
||||||
|
|
||||||
# 应用的节点
|
# 应用的节点
|
||||||
for app in queryset:
|
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)
|
node = app.as_tree_node(root_node.id)
|
||||||
tree_nodes.append(node)
|
tree_nodes.append(node)
|
||||||
return tree_nodes
|
return tree_nodes
|
||||||
|
|
Loading…
Reference in New Issue