perf: 整理用户授权资产的API

This commit is contained in:
Jiangjie.Bai
2022-09-13 15:41:39 +08:00
parent 4a21f86cd1
commit a2c006f01b
5 changed files with 52 additions and 59 deletions

View File

@@ -9,57 +9,52 @@ from .mixin import (
)
__all__ = [
'UserDirectGrantedAssetsForAdminApi', 'MyDirectGrantedAssetsApi',
'UserFavoriteGrantedAssetsForAdminApi',
'MyFavoriteGrantedAssetsApi', 'UserDirectGrantedAssetsAsTreeForAdminApi',
'UserDirectGrantedAssetsApi', 'MyDirectGrantedAssetsApi',
'UserFavoriteGrantedAssetsApi',
'MyFavoriteGrantedAssetsApi', 'UserDirectGrantedAssetsAsTreeApi',
'MyUngroupAssetsAsTreeApi',
'UserAllGrantedAssetsApi', 'MyAllGrantedAssetsApi', 'MyAllAssetsAsTreeApi',
'UserGrantedNodeAssetsForAdminApi',
'UserGrantedNodeAssetsApi',
'MyGrantedNodeAssetsApi',
]
logger = get_logger(__name__)
class UserDirectGrantedAssetsForAdminApi(UserDirectGrantedAssetsQuerysetMixin,
AssetRoleAdminMixin,
AssetsSerializerFormatMixin,
ListAPIView):
class UserDirectGrantedAssetsApi(
AssetRoleAdminMixin,
UserDirectGrantedAssetsQuerysetMixin, AssetsSerializerFormatMixin, ListAPIView
):
""" 直接授权给用户的资产 """
pass
class MyDirectGrantedAssetsApi(UserDirectGrantedAssetsQuerysetMixin,
AssetRoleUserMixin,
AssetsSerializerFormatMixin,
ListAPIView):
class MyDirectGrantedAssetsApi(AssetRoleUserMixin, UserDirectGrantedAssetsApi):
""" 直接授权给我的资产 """
pass
class UserFavoriteGrantedAssetsForAdminApi(UserFavoriteGrantedAssetsMixin,
AssetRoleAdminMixin,
AssetsSerializerFormatMixin,
ListAPIView):
class UserFavoriteGrantedAssetsApi(
AssetRoleAdminMixin,
UserFavoriteGrantedAssetsMixin, AssetsSerializerFormatMixin, ListAPIView
):
""" 用户收藏的授权资产 """
pass
class MyFavoriteGrantedAssetsApi(UserFavoriteGrantedAssetsMixin,
AssetRoleUserMixin,
AssetsSerializerFormatMixin,
ListAPIView):
class MyFavoriteGrantedAssetsApi(AssetRoleUserMixin, UserFavoriteGrantedAssetsApi):
""" 我收藏的授权资产 """
pass
class UserDirectGrantedAssetsAsTreeForAdminApi(UserDirectGrantedAssetsQuerysetMixin,
AssetRoleAdminMixin,
AssetsTreeFormatMixin,
ListAPIView):
class UserDirectGrantedAssetsAsTreeApi(AssetsTreeFormatMixin, UserDirectGrantedAssetsApi):
""" 用户直接授权的资产作为树 """
pass
class MyUngroupAssetsAsTreeApi(UserDirectGrantedAssetsQuerysetMixin,
AssetRoleUserMixin,
AssetsTreeFormatMixin,
ListAPIView):
class MyUngroupAssetsAsTreeApi(AssetRoleUserMixin, UserDirectGrantedAssetsAsTreeApi):
""" 我的未分组节点下的资产作为树 """
def get_queryset(self):
queryset = super().get_queryset()
if not settings.PERM_SINGLE_ASSET_TO_UNGROUP_NODE:
@@ -67,36 +62,31 @@ class MyUngroupAssetsAsTreeApi(UserDirectGrantedAssetsQuerysetMixin,
return queryset
class UserAllGrantedAssetsApi(UserAllGrantedAssetsQuerysetMixin,
AssetRoleAdminMixin,
AssetsSerializerFormatMixin,
ListAPIView):
class UserAllGrantedAssetsApi(
AssetRoleAdminMixin,
UserAllGrantedAssetsQuerysetMixin, AssetsSerializerFormatMixin, ListAPIView
):
""" 授权给用户的所有资产 """
pass
class MyAllGrantedAssetsApi(UserAllGrantedAssetsQuerysetMixin,
AssetRoleUserMixin,
AssetsSerializerFormatMixin,
ListAPIView):
class MyAllGrantedAssetsApi(AssetRoleUserMixin, UserAllGrantedAssetsApi):
""" 授权给我的所有资产 """
pass
class MyAllAssetsAsTreeApi(UserAllGrantedAssetsQuerysetMixin,
AssetRoleUserMixin,
AssetsTreeFormatMixin,
ListAPIView):
class MyAllAssetsAsTreeApi(AssetsTreeFormatMixin, MyAllGrantedAssetsApi):
""" 授权给我的所有资产作为树 """
pass
class UserGrantedNodeAssetsForAdminApi(AssetRoleAdminMixin,
UserGrantedNodeAssetsMixin,
AssetsSerializerFormatMixin,
ListAPIView):
class UserGrantedNodeAssetsApi(
AssetRoleAdminMixin, UserGrantedNodeAssetsMixin, AssetsSerializerFormatMixin, ListAPIView
):
""" 授权给用户的节点资产 """
pass
class MyGrantedNodeAssetsApi(AssetRoleUserMixin,
UserGrantedNodeAssetsMixin,
AssetsSerializerFormatMixin,
ListAPIView):
class MyGrantedNodeAssetsApi(AssetRoleUserMixin, UserGrantedNodeAssetsApi):
""" 授权给我的节点资产 """
pass

View File

@@ -64,6 +64,7 @@ class UserGrantedNodeAssetsMixin:
pagination_class = NodeGrantedAssetPagination
pagination_node: Node
user: User
kwargs: dict
def get_queryset(self):
if getattr(self, 'swagger_fake_view', False):
@@ -91,6 +92,9 @@ class AssetsTreeFormatMixin(SerializeToTreeNodeMixin):
"""
将 资产 序列化成树的结构返回
"""
filter_queryset: callable
get_queryset: callable
filterset_fields = ['name', 'ip', 'id', 'comment']
search_fields = ['name', 'ip', 'comment']

View File

@@ -3,14 +3,14 @@
from rest_framework.request import Request
from common.http import is_true
from common.mixins.api import RoleAdminMixin as _RoleAdminMixin
from common.mixins.api import RoleUserMixin as _RoleUserMixin
from common.mixins.api import RoleAdminMixin
from common.mixins.api import RoleUserMixin
from orgs.utils import tmp_to_root_org
from users.models import User
from perms.utils.user_permission import UserGrantedTreeRefreshController
class PermBaseMixin:
class RebuildTreeMixin:
user: User
def get(self, request: Request, *args, **kwargs):
@@ -20,7 +20,7 @@ class PermBaseMixin:
return super().get(request, *args, **kwargs)
class AssetRoleAdminMixin(PermBaseMixin, _RoleAdminMixin):
class AssetRoleAdminMixin(RebuildTreeMixin, RoleAdminMixin):
rbac_perms = (
('list', 'perms.view_userassets'),
('retrieve', 'perms.view_userassets'),
@@ -29,7 +29,7 @@ class AssetRoleAdminMixin(PermBaseMixin, _RoleAdminMixin):
)
class AssetRoleUserMixin(PermBaseMixin, _RoleUserMixin):
class AssetRoleUserMixin(RebuildTreeMixin, RoleUserMixin):
rbac_perms = (
('list', 'perms.view_myassets'),
('retrieve', 'perms.view_myassets'),