From 4bfa88f01f7fdf2f42745573406a9740be2b6c11 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 15 Mar 2022 20:02:08 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=20app=20tree?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/applications/const.py | 23 ++++++++++++++++++++--- apps/applications/models/application.py | 7 +++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/apps/applications/const.py b/apps/applications/const.py index 76fc51e33..8436f3ebd 100644 --- a/apps/applications/const.py +++ b/apps/applications/const.py @@ -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'] diff --git a/apps/applications/models/application.py b/apps/applications/models/application.py index 467a5de39..fa8125887 100644 --- a/apps/applications/models/application.py +++ b/apps/applications/models/application.py @@ -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