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