From fdded8b90f295f09b5285901bceef8c1e84b0b33 Mon Sep 17 00:00:00 2001 From: Bai Date: Thu, 22 Oct 2020 18:13:14 +0800 Subject: [PATCH] =?UTF-8?q?refactor(perms):=20=E4=BF=AE=E6=94=B9=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E8=A7=84=E5=88=99=E7=9A=84=E7=9B=AE=E5=BD=95=E7=BB=93?= =?UTF-8?q?=E6=9E=84=EF=BC=88asset=E3=80=81application)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/models/favorite_asset.py | 2 +- apps/perms/api/__init__.py | 12 +-- apps/perms/api/application/__init__.py | 4 + .../application_permission.py | 4 +- .../application_permission_relation.py | 4 +- .../user_group_permission_application.py | 0 .../user_permission}/__init__.py | 0 .../user_permission}/common.py | 8 +- .../user_permission_applications.py | 4 +- apps/perms/api/asset/__init__.py | 4 + .../perms/api/{ => asset}/asset_permission.py | 6 +- .../{ => asset}/asset_permission_relation.py | 4 +- .../api/{ => asset}/user_group_permission.py | 4 +- .../{ => asset}/user_permission/__init__.py | 0 .../api/{ => asset}/user_permission/common.py | 8 +- .../api/{ => asset}/user_permission/mixin.py | 0 .../user_permission/user_permission_assets.py | 6 +- .../user_permission/user_permission_nodes.py | 6 +- .../user_permission_nodes_with_assets.py | 5 +- apps/perms/serializers/__init__.py | 9 +- .../perms/serializers/application/__init__.py | 3 + .../permission.py} | 0 .../permission_relation.py} | 2 +- .../application/user_permission.py | 38 +++++++++ apps/perms/serializers/asset/__init__.py | 3 + .../permission.py} | 0 .../permission_relation.py} | 2 +- .../{ => asset}/user_permission.py | 85 +++++++------------ apps/perms/tasks.py | 2 +- apps/perms/urls/api_urls.py | 1 + apps/perms/utils/__init__.py | 8 +- apps/perms/utils/application/__init__.py | 2 + .../permission.py} | 2 +- .../user_permission.py} | 0 apps/perms/utils/asset/__init__.py | 2 + .../permission.py} | 4 +- .../user_permission.py} | 0 37 files changed, 134 insertions(+), 110 deletions(-) create mode 100644 apps/perms/api/application/__init__.py rename apps/perms/api/{ => application}/application_permission.py (88%) rename apps/perms/api/{ => application}/application_permission_relation.py (98%) rename apps/perms/api/{ => application}/user_group_permission_application.py (100%) rename apps/perms/api/{user_permission_application => application/user_permission}/__init__.py (100%) rename apps/perms/api/{user_permission_application => application/user_permission}/common.py (92%) rename apps/perms/api/{user_permission_application => application/user_permission}/user_permission_applications.py (93%) create mode 100644 apps/perms/api/asset/__init__.py rename apps/perms/api/{ => asset}/asset_permission.py (98%) rename apps/perms/api/{ => asset}/asset_permission_relation.py (98%) rename apps/perms/api/{ => asset}/user_group_permission.py (98%) rename apps/perms/api/{ => asset}/user_permission/__init__.py (100%) rename apps/perms/api/{ => asset}/user_permission/common.py (96%) rename apps/perms/api/{ => asset}/user_permission/mixin.py (100%) rename apps/perms/api/{ => asset}/user_permission/user_permission_assets.py (96%) rename apps/perms/api/{ => asset}/user_permission/user_permission_nodes.py (97%) rename apps/perms/api/{ => asset}/user_permission/user_permission_nodes_with_assets.py (97%) create mode 100644 apps/perms/serializers/application/__init__.py rename apps/perms/serializers/{application_permission.py => application/permission.py} (100%) rename apps/perms/serializers/{application_permission_relation.py => application/permission_relation.py} (98%) create mode 100644 apps/perms/serializers/application/user_permission.py create mode 100644 apps/perms/serializers/asset/__init__.py rename apps/perms/serializers/{asset_permission.py => asset/permission.py} (100%) rename apps/perms/serializers/{asset_permission_relation.py => asset/permission_relation.py} (98%) rename apps/perms/serializers/{ => asset}/user_permission.py (74%) create mode 100644 apps/perms/utils/application/__init__.py rename apps/perms/utils/{application_permission.py => application/permission.py} (88%) rename apps/perms/utils/{user_application_permission.py => application/user_permission.py} (100%) create mode 100644 apps/perms/utils/asset/__init__.py rename apps/perms/utils/{asset_permission.py => asset/permission.py} (94%) rename apps/perms/utils/{user_asset_permission.py => asset/user_permission.py} (100%) diff --git a/apps/assets/models/favorite_asset.py b/apps/assets/models/favorite_asset.py index af47a867f..3497a075c 100644 --- a/apps/assets/models/favorite_asset.py +++ b/apps/assets/models/favorite_asset.py @@ -22,7 +22,7 @@ class FavoriteAsset(CommonModelMixin): @classmethod def get_user_favorite_assets(cls, user): from assets.models import Asset - from perms.utils.user_asset_permission import get_user_granted_all_assets + from perms.utils.asset.user_permission import get_user_granted_all_assets asset_ids = get_user_granted_all_assets(user).values_list('id', flat=True) query_name = cls.asset.field.related_query_name() return Asset.org_objects.filter(**{f'{query_name}__user_id': user.id}, id__in=asset_ids).distinct() diff --git a/apps/perms/api/__init__.py b/apps/perms/api/__init__.py index 514010b31..50957c154 100644 --- a/apps/perms/api/__init__.py +++ b/apps/perms/api/__init__.py @@ -1,14 +1,10 @@ # -*- coding: utf-8 -*- # -from .asset_permission import * -from .application_permission import * -from .user_permission import * -from .user_permission_application import * -from .asset_permission_relation import * -from .application_permission_relation import * -from .user_group_permission import * -from .user_group_permission_application import * +from .asset import * +from .application import * + +# TODO: 删除 from .remote_app_permission import * from .remote_app_permission_relation import * from .user_remote_app_permission import * diff --git a/apps/perms/api/application/__init__.py b/apps/perms/api/application/__init__.py new file mode 100644 index 000000000..5741ddc92 --- /dev/null +++ b/apps/perms/api/application/__init__.py @@ -0,0 +1,4 @@ +from .user_permission import * +from .application_permission import * +from .application_permission_relation import * +from .user_group_permission_application import * diff --git a/apps/perms/api/application_permission.py b/apps/perms/api/application/application_permission.py similarity index 88% rename from apps/perms/api/application_permission.py rename to apps/perms/api/application/application_permission.py index 24a43d7e9..ec30d30a9 100644 --- a/apps/perms/api/application_permission.py +++ b/apps/perms/api/application/application_permission.py @@ -2,8 +2,8 @@ # from common.permissions import IsOrgAdmin from orgs.mixins.api import OrgBulkModelViewSet -from ..models import ApplicationPermission -from .. import serializers +from perms.models import ApplicationPermission +from perms import serializers class ApplicationPermissionViewSet(OrgBulkModelViewSet): diff --git a/apps/perms/api/application_permission_relation.py b/apps/perms/api/application/application_permission_relation.py similarity index 98% rename from apps/perms/api/application_permission_relation.py rename to apps/perms/api/application/application_permission_relation.py index 7e05cc6ce..70d7e66e1 100644 --- a/apps/perms/api/application_permission_relation.py +++ b/apps/perms/api/application/application_permission_relation.py @@ -10,8 +10,8 @@ from orgs.mixins.api import OrgRelationMixin from orgs.mixins.api import OrgBulkModelViewSet from orgs.utils import current_org from common.permissions import IsOrgAdmin -from .. import serializers -from .. import models +from perms import serializers +from perms import models __all__ = [ 'ApplicationPermissionUserRelationViewSet', diff --git a/apps/perms/api/user_group_permission_application.py b/apps/perms/api/application/user_group_permission_application.py similarity index 100% rename from apps/perms/api/user_group_permission_application.py rename to apps/perms/api/application/user_group_permission_application.py diff --git a/apps/perms/api/user_permission_application/__init__.py b/apps/perms/api/application/user_permission/__init__.py similarity index 100% rename from apps/perms/api/user_permission_application/__init__.py rename to apps/perms/api/application/user_permission/__init__.py diff --git a/apps/perms/api/user_permission_application/common.py b/apps/perms/api/application/user_permission/common.py similarity index 92% rename from apps/perms/api/user_permission_application/common.py rename to apps/perms/api/application/user_permission/common.py index 4ac6ba728..a147a45ce 100644 --- a/apps/perms/api/user_permission_application/common.py +++ b/apps/perms/api/application/user_permission/common.py @@ -8,13 +8,13 @@ from rest_framework.generics import ( ) from applications.models import Application -from perms.utils.application_permission import ( +from perms.utils.application.permission import ( get_application_system_users_id ) -from perms.api.user_permission.mixin import ForAdminMixin, ForUserMixin +from perms.api.asset.user_permission.mixin import ForAdminMixin, ForUserMixin from common.permissions import IsOrgAdminOrAppUser -from ...hands import User, SystemUser -from ... import serializers +from perms.hands import User, SystemUser +from perms import serializers __all__ = [ diff --git a/apps/perms/api/user_permission_application/user_permission_applications.py b/apps/perms/api/application/user_permission/user_permission_applications.py similarity index 93% rename from apps/perms/api/user_permission_application/user_permission_applications.py rename to apps/perms/api/application/user_permission/user_permission_applications.py index aa8a54b1a..5f67882ad 100644 --- a/apps/perms/api/user_permission_application/user_permission_applications.py +++ b/apps/perms/api/application/user_permission/user_permission_applications.py @@ -5,8 +5,8 @@ from rest_framework.response import Response from applications.api.mixin import SerializeApplicationToTreeNodeMixin from perms import serializers -from perms.api.user_permission.mixin import ForAdminMixin, ForUserMixin -from perms.utils.user_application_permission import ( +from perms.api.asset.user_permission.mixin import ForAdminMixin, ForUserMixin +from perms.utils.application.user_permission import ( get_user_granted_all_applications ) diff --git a/apps/perms/api/asset/__init__.py b/apps/perms/api/asset/__init__.py new file mode 100644 index 000000000..49c998e95 --- /dev/null +++ b/apps/perms/api/asset/__init__.py @@ -0,0 +1,4 @@ +from .user_permission import * +from .asset_permission import * +from .asset_permission_relation import * +from .user_group_permission import * diff --git a/apps/perms/api/asset_permission.py b/apps/perms/api/asset/asset_permission.py similarity index 98% rename from apps/perms/api/asset_permission.py rename to apps/perms/api/asset/asset_permission.py index 7b795a5a5..b57321a8a 100644 --- a/apps/perms/api/asset_permission.py +++ b/apps/perms/api/asset/asset_permission.py @@ -5,11 +5,11 @@ from django.db.models import Q from common.permissions import IsOrgAdmin from orgs.mixins.api import OrgBulkModelViewSet from common.utils import get_object_or_none -from ..models import AssetPermission -from ..hands import ( +from perms.models import AssetPermission +from perms.hands import ( User, UserGroup, Asset, Node, SystemUser, ) -from .. import serializers +from perms import serializers __all__ = [ diff --git a/apps/perms/api/asset_permission_relation.py b/apps/perms/api/asset/asset_permission_relation.py similarity index 98% rename from apps/perms/api/asset_permission_relation.py rename to apps/perms/api/asset/asset_permission_relation.py index e9309c7e7..b21c12cb0 100644 --- a/apps/perms/api/asset_permission_relation.py +++ b/apps/perms/api/asset/asset_permission_relation.py @@ -11,8 +11,8 @@ from orgs.mixins.api import OrgRelationMixin from orgs.mixins.api import OrgBulkModelViewSet from orgs.utils import current_org from common.permissions import IsOrgAdmin -from .. import serializers -from .. import models +from perms import serializers +from perms import models __all__ = [ 'AssetPermissionUserRelationViewSet', 'AssetPermissionUserGroupRelationViewSet', diff --git a/apps/perms/api/user_group_permission.py b/apps/perms/api/asset/user_group_permission.py similarity index 98% rename from apps/perms/api/user_group_permission.py rename to apps/perms/api/asset/user_group_permission.py index 8c1b3071d..b595e4132 100644 --- a/apps/perms/api/user_group_permission.py +++ b/apps/perms/api/asset/user_group_permission.py @@ -10,9 +10,9 @@ from common.permissions import IsOrgAdminOrAppUser from common.utils import lazyproperty from perms.models import AssetPermission from assets.models import Asset, Node -from . import user_permission as uapi +from perms.api.asset import user_permission as uapi from perms import serializers -from perms.utils.asset_permission import get_asset_system_users_id_with_actions_by_group +from perms.utils.asset.permission import get_asset_system_users_id_with_actions_by_group from assets.api.mixin import SerializeToTreeNodeMixin from users.models import UserGroup diff --git a/apps/perms/api/user_permission/__init__.py b/apps/perms/api/asset/user_permission/__init__.py similarity index 100% rename from apps/perms/api/user_permission/__init__.py rename to apps/perms/api/asset/user_permission/__init__.py diff --git a/apps/perms/api/user_permission/common.py b/apps/perms/api/asset/user_permission/common.py similarity index 96% rename from apps/perms/api/user_permission/common.py rename to apps/perms/api/asset/user_permission/common.py index 2f8a4a56a..89df323cc 100644 --- a/apps/perms/api/user_permission/common.py +++ b/apps/perms/api/asset/user_permission/common.py @@ -10,13 +10,13 @@ from rest_framework.generics import ( ) from orgs.utils import tmp_to_root_org -from perms.utils.asset_permission import get_asset_system_users_id_with_actions_by_user +from perms.utils.asset.permission import get_asset_system_users_id_with_actions_by_user from common.permissions import IsOrgAdminOrAppUser, IsOrgAdmin, IsValidUser from common.utils import get_logger, lazyproperty -from ...hands import User, Asset, SystemUser -from ... import serializers -from ...models import Action +from perms.hands import User, Asset, SystemUser +from perms import serializers +from perms.models import Action logger = get_logger(__name__) diff --git a/apps/perms/api/user_permission/mixin.py b/apps/perms/api/asset/user_permission/mixin.py similarity index 100% rename from apps/perms/api/user_permission/mixin.py rename to apps/perms/api/asset/user_permission/mixin.py diff --git a/apps/perms/api/user_permission/user_permission_assets.py b/apps/perms/api/asset/user_permission/user_permission_assets.py similarity index 96% rename from apps/perms/api/user_permission/user_permission_assets.py rename to apps/perms/api/asset/user_permission/user_permission_assets.py index 097527f0f..949f12c67 100644 --- a/apps/perms/api/user_permission/user_permission_assets.py +++ b/apps/perms/api/asset/user_permission/user_permission_assets.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from perms.api.user_permission.mixin import UserNodeGrantStatusDispatchMixin +from perms.api.asset.user_permission.mixin import UserNodeGrantStatusDispatchMixin from rest_framework.generics import ListAPIView from rest_framework.response import Response from django.conf import settings @@ -9,8 +9,8 @@ from assets.api.mixin import SerializeToTreeNodeMixin from common.utils import get_logger from perms.pagination import GrantedAssetLimitOffsetPagination from assets.models import Asset, Node, FavoriteAsset -from ... import serializers -from ...utils.user_asset_permission import ( +from perms import serializers +from perms.utils.asset.user_permission import ( get_node_all_granted_assets, get_user_direct_granted_assets, get_user_granted_all_assets ) diff --git a/apps/perms/api/user_permission/user_permission_nodes.py b/apps/perms/api/asset/user_permission/user_permission_nodes.py similarity index 97% rename from apps/perms/api/user_permission/user_permission_nodes.py rename to apps/perms/api/asset/user_permission/user_permission_nodes.py index a4f9aed8e..72e7d4e33 100644 --- a/apps/perms/api/user_permission/user_permission_nodes.py +++ b/apps/perms/api/asset/user_permission/user_permission_nodes.py @@ -10,9 +10,9 @@ from rest_framework.request import Request from assets.api.mixin import SerializeToTreeNodeMixin from common.utils import get_logger from .mixin import ForAdminMixin, ForUserMixin, UserNodeGrantStatusDispatchMixin -from ...hands import Node, User -from ... import serializers -from ...utils.user_asset_permission import ( +from perms.hands import Node, User +from perms import serializers +from perms.utils.asset.user_permission import ( get_indirect_granted_node_children, get_user_granted_nodes_list_via_mapping_node, get_top_level_granted_nodes, diff --git a/apps/perms/api/user_permission/user_permission_nodes_with_assets.py b/apps/perms/api/asset/user_permission/user_permission_nodes_with_assets.py similarity index 97% rename from apps/perms/api/user_permission/user_permission_nodes_with_assets.py rename to apps/perms/api/asset/user_permission/user_permission_nodes_with_assets.py index 6578e09a4..0a65f2928 100644 --- a/apps/perms/api/user_permission/user_permission_nodes_with_assets.py +++ b/apps/perms/api/asset/user_permission/user_permission_nodes_with_assets.py @@ -8,8 +8,7 @@ from django.db.models import F from common.permissions import IsValidUser from common.utils import get_logger, get_object_or_none from .mixin import UserNodeGrantStatusDispatchMixin, ForUserMixin, ForAdminMixin -from ...utils.user_asset_permission import ( - get_user_resources_q_granted_by_permissions, +from perms.utils.asset.user_permission import ( get_indirect_granted_node_children, UNGROUPED_NODE_KEY, FAVORITE_NODE_KEY, get_user_direct_granted_assets, get_top_level_granted_nodes, get_user_granted_nodes_list_via_mapping_node, @@ -19,7 +18,7 @@ from ...utils.user_asset_permission import ( from assets.models import Asset, FavoriteAsset from assets.api import SerializeToTreeNodeMixin -from ...hands import Node +from perms.hands import Node logger = get_logger(__name__) diff --git a/apps/perms/serializers/__init__.py b/apps/perms/serializers/__init__.py index 0c3cf741d..2ecfc8172 100644 --- a/apps/perms/serializers/__init__.py +++ b/apps/perms/serializers/__init__.py @@ -1,13 +1,12 @@ # coding: utf-8 # +from .asset import * +from .application import * from .system_user_permission import * -from .asset_permission import * -from .application_permission import * -from .user_permission import * + +# TODO: 删除 from .remote_app_permission import * from .remote_app_permission_relation import * -from .asset_permission_relation import * -from .application_permission_relation import * from .database_app_permission import * from .database_app_permission_relation import * from .base import * diff --git a/apps/perms/serializers/application/__init__.py b/apps/perms/serializers/application/__init__.py new file mode 100644 index 000000000..5fb99849f --- /dev/null +++ b/apps/perms/serializers/application/__init__.py @@ -0,0 +1,3 @@ +from .permission import * +from .permission_relation import * +from .user_permission import * diff --git a/apps/perms/serializers/application_permission.py b/apps/perms/serializers/application/permission.py similarity index 100% rename from apps/perms/serializers/application_permission.py rename to apps/perms/serializers/application/permission.py diff --git a/apps/perms/serializers/application_permission_relation.py b/apps/perms/serializers/application/permission_relation.py similarity index 98% rename from apps/perms/serializers/application_permission_relation.py rename to apps/perms/serializers/application/permission_relation.py index fd3f12f57..94ea8e608 100644 --- a/apps/perms/serializers/application_permission_relation.py +++ b/apps/perms/serializers/application/permission_relation.py @@ -4,7 +4,7 @@ from rest_framework import serializers from common.mixins import BulkSerializerMixin from common.serializers import AdaptedBulkListSerializer -from ..models import ApplicationPermission +from perms.models import ApplicationPermission __all__ = [ 'ApplicationPermissionUserRelationSerializer', diff --git a/apps/perms/serializers/application/user_permission.py b/apps/perms/serializers/application/user_permission.py new file mode 100644 index 000000000..1b6accfca --- /dev/null +++ b/apps/perms/serializers/application/user_permission.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# + +from rest_framework import serializers + +from assets.models import SystemUser +from applications.models import Application + +__all__ = [ + 'ApplicationGrantedSerializer', + 'ApplicationSystemUserSerializer' +] + + +class ApplicationSystemUserSerializer(serializers.ModelSerializer): + """ + 查看授权的应用系统用户的数据结构,这个和SystemUserSerializer不同,字段少 + """ + class Meta: + model = SystemUser + only_fields = ( + 'id', 'name', 'username', 'priority', 'protocol', 'login_mode' + ) + fields = list(only_fields) + read_only_fields = fields + + +class ApplicationGrantedSerializer(serializers.ModelSerializer): + """ + 被授权应用的数据结构 + """ + class Meta: + model = Application + only_fields = [ + 'id', 'name', 'domain', 'category', 'type', 'comment', 'org_id' + ] + fields = only_fields + ['org_name'] + read_only_fields = fields diff --git a/apps/perms/serializers/asset/__init__.py b/apps/perms/serializers/asset/__init__.py new file mode 100644 index 000000000..5fb99849f --- /dev/null +++ b/apps/perms/serializers/asset/__init__.py @@ -0,0 +1,3 @@ +from .permission import * +from .permission_relation import * +from .user_permission import * diff --git a/apps/perms/serializers/asset_permission.py b/apps/perms/serializers/asset/permission.py similarity index 100% rename from apps/perms/serializers/asset_permission.py rename to apps/perms/serializers/asset/permission.py diff --git a/apps/perms/serializers/asset_permission_relation.py b/apps/perms/serializers/asset/permission_relation.py similarity index 98% rename from apps/perms/serializers/asset_permission_relation.py rename to apps/perms/serializers/asset/permission_relation.py index e466ad338..1081f76a0 100644 --- a/apps/perms/serializers/asset_permission_relation.py +++ b/apps/perms/serializers/asset/permission_relation.py @@ -5,7 +5,7 @@ from rest_framework import serializers from common.mixins import BulkSerializerMixin from common.serializers import AdaptedBulkListSerializer from assets.models import Asset, Node -from ..models import AssetPermission +from perms.models import AssetPermission from users.models import User __all__ = [ diff --git a/apps/perms/serializers/user_permission.py b/apps/perms/serializers/asset/user_permission.py similarity index 74% rename from apps/perms/serializers/user_permission.py rename to apps/perms/serializers/asset/user_permission.py index 380389bcc..be33d679b 100644 --- a/apps/perms/serializers/user_permission.py +++ b/apps/perms/serializers/asset/user_permission.py @@ -6,8 +6,7 @@ from django.utils.translation import ugettext_lazy as _ from assets.models import Node, SystemUser, Asset from assets.serializers import ProtocolsField -from .asset_permission import ActionsField -from applications.models import Application +from perms.serializers.asset.permission import ActionsField __all__ = [ 'NodeGrantedSerializer', @@ -16,8 +15,6 @@ __all__ = [ 'RemoteAppSystemUserSerializer', 'DatabaseAppSystemUserSerializer', 'K8sAppSystemUserSerializer', - 'ApplicationGrantedSerializer', - 'ApplicationSystemUserSerializer' ] @@ -37,49 +34,6 @@ class AssetSystemUserSerializer(serializers.ModelSerializer): read_only_fields = fields -class ApplicationSystemUserSerializer(serializers.ModelSerializer): - """ - 查看授权的应用系统用户的数据结构,这个和SystemUserSerializer不同,字段少 - """ - class Meta: - model = SystemUser - only_fields = ( - 'id', 'name', 'username', 'priority', 'protocol', 'login_mode' - ) - fields = list(only_fields) - read_only_fields = fields - - -class RemoteAppSystemUserSerializer(serializers.ModelSerializer): - class Meta: - model = SystemUser - only_fields = ( - 'id', 'name', 'username', 'priority', 'protocol', 'login_mode', - ) - fields = list(only_fields) - read_only_fields = fields - - -class DatabaseAppSystemUserSerializer(serializers.ModelSerializer): - class Meta: - model = SystemUser - only_fields = ( - 'id', 'name', 'username', 'priority', 'protocol', 'login_mode', - ) - fields = list(only_fields) - read_only_fields = fields - - -class K8sAppSystemUserSerializer(serializers.ModelSerializer): - class Meta: - model = SystemUser - only_fields = ( - 'id', 'name', 'username', 'priority', 'protocol', 'login_mode', - ) - fields = list(only_fields) - read_only_fields = fields - - class AssetGrantedSerializer(serializers.ModelSerializer): """ 被授权资产的数据结构 @@ -110,14 +64,33 @@ class ActionsSerializer(serializers.Serializer): actions = ActionsField(read_only=True) -class ApplicationGrantedSerializer(serializers.ModelSerializer): - """ - 被授权应用的数据结构 - """ +# TODO: 删除 +class RemoteAppSystemUserSerializer(serializers.ModelSerializer): class Meta: - model = Application - only_fields = [ - 'id', 'name', 'domain', 'category', 'type', 'comment', 'org_id' - ] - fields = only_fields + ['org_name'] + model = SystemUser + only_fields = ( + 'id', 'name', 'username', 'priority', 'protocol', 'login_mode', + ) + fields = list(only_fields) read_only_fields = fields + + +class DatabaseAppSystemUserSerializer(serializers.ModelSerializer): + class Meta: + model = SystemUser + only_fields = ( + 'id', 'name', 'username', 'priority', 'protocol', 'login_mode', + ) + fields = list(only_fields) + read_only_fields = fields + + +class K8sAppSystemUserSerializer(serializers.ModelSerializer): + class Meta: + model = SystemUser + only_fields = ( + 'id', 'name', 'username', 'priority', 'protocol', 'login_mode', + ) + fields = list(only_fields) + read_only_fields = fields + diff --git a/apps/perms/tasks.py b/apps/perms/tasks.py index b2010d0ed..07fc71ae9 100644 --- a/apps/perms/tasks.py +++ b/apps/perms/tasks.py @@ -11,7 +11,7 @@ from common.utils.timezone import now, dt_formater, dt_parser from users.models import User from assets.models import Node from perms.models import RebuildUserTreeTask, AssetPermission -from perms.utils.user_asset_permission import rebuild_user_mapping_nodes_if_need_with_lock, lock +from perms.utils.asset.user_permission import rebuild_user_mapping_nodes_if_need_with_lock, lock logger = get_logger(__file__) diff --git a/apps/perms/urls/api_urls.py b/apps/perms/urls/api_urls.py index 3559703a9..97deef6bd 100644 --- a/apps/perms/urls/api_urls.py +++ b/apps/perms/urls/api_urls.py @@ -4,6 +4,7 @@ from django.urls import re_path from common import api as capi from .asset_permission import asset_permission_urlpatterns from .application_permission import application_permission_urlpatterns + from .remote_app_permission import remote_app_permission_urlpatterns from .database_app_permission import database_app_permission_urlpatterns from .system_user_permission import system_users_permission_urlpatterns diff --git a/apps/perms/utils/__init__.py b/apps/perms/utils/__init__.py index c556d2f89..c29f9a2ae 100644 --- a/apps/perms/utils/__init__.py +++ b/apps/perms/utils/__init__.py @@ -1,10 +1,10 @@ # coding: utf-8 # -from .asset_permission import * -from .application_permission import * +from .asset import * +from .application import * + +# TODO: 删除 from .remote_app_permission import * from .database_app_permission import * from .k8s_app_permission import * -from .user_asset_permission import * -from .user_application_permission import * diff --git a/apps/perms/utils/application/__init__.py b/apps/perms/utils/application/__init__.py new file mode 100644 index 000000000..ea3cb14de --- /dev/null +++ b/apps/perms/utils/application/__init__.py @@ -0,0 +1,2 @@ +from .permission import * +from .user_permission import * diff --git a/apps/perms/utils/application_permission.py b/apps/perms/utils/application/permission.py similarity index 88% rename from apps/perms/utils/application_permission.py rename to apps/perms/utils/application/permission.py index 83f246ab3..6908db5a3 100644 --- a/apps/perms/utils/application_permission.py +++ b/apps/perms/utils/application/permission.py @@ -1,7 +1,7 @@ from django.db.models import Q from common.utils import get_logger -from ..models import ApplicationPermission +from perms.models import ApplicationPermission logger = get_logger(__file__) diff --git a/apps/perms/utils/user_application_permission.py b/apps/perms/utils/application/user_permission.py similarity index 100% rename from apps/perms/utils/user_application_permission.py rename to apps/perms/utils/application/user_permission.py diff --git a/apps/perms/utils/asset/__init__.py b/apps/perms/utils/asset/__init__.py new file mode 100644 index 000000000..ea3cb14de --- /dev/null +++ b/apps/perms/utils/asset/__init__.py @@ -0,0 +1,2 @@ +from .permission import * +from .user_permission import * diff --git a/apps/perms/utils/asset_permission.py b/apps/perms/utils/asset/permission.py similarity index 94% rename from apps/perms/utils/asset_permission.py rename to apps/perms/utils/asset/permission.py index 09218de04..384fcd25a 100644 --- a/apps/perms/utils/asset_permission.py +++ b/apps/perms/utils/asset/permission.py @@ -3,8 +3,8 @@ from collections import defaultdict from django.db.models import Q from common.utils import get_logger -from ..models import AssetPermission -from ..hands import Asset, User, UserGroup +from perms.models import AssetPermission +from perms.hands import Asset, User, UserGroup from perms.models.base import BasePermissionQuerySet logger = get_logger(__file__) diff --git a/apps/perms/utils/user_asset_permission.py b/apps/perms/utils/asset/user_permission.py similarity index 100% rename from apps/perms/utils/user_asset_permission.py rename to apps/perms/utils/asset/user_permission.py