Commit e805e9ce authored by BaiJiangJie's avatar BaiJiangJie

[Update] 优化用户授权的 RemoteApp API 过滤逻辑

parent 3f9e2f0a
...@@ -14,7 +14,6 @@ from ..utils import ( ...@@ -14,7 +14,6 @@ from ..utils import (
parse_remote_app_to_tree_node, parse_remote_app_to_tree_node,
) )
from ..hands import User, RemoteApp, RemoteAppSerializer, UserGroup, SystemUser from ..hands import User, RemoteApp, RemoteAppSerializer, UserGroup, SystemUser
from ..mixins import RemoteAppFilterMixin
from .mixin import UserPermissionMixin from .mixin import UserPermissionMixin
from .. import serializers from .. import serializers
...@@ -26,10 +25,11 @@ __all__ = [ ...@@ -26,10 +25,11 @@ __all__ = [
] ]
class UserGrantedRemoteAppsApi(RemoteAppFilterMixin, ListAPIView): class UserGrantedRemoteAppsApi(ListAPIView):
permission_classes = (IsOrgAdminOrAppUser,) permission_classes = (IsOrgAdminOrAppUser,)
serializer_class = RemoteAppSerializer serializer_class = RemoteAppSerializer
filter_fields = ['id'] filter_fields = ['name', 'id']
search_fields = ['name']
def get_object(self): def get_object(self):
user_id = self.kwargs.get('pk', '') user_id = self.kwargs.get('pk', '')
...@@ -54,15 +54,14 @@ class UserGrantedRemoteAppsAsTreeApi(UserGrantedRemoteAppsApi): ...@@ -54,15 +54,14 @@ class UserGrantedRemoteAppsAsTreeApi(UserGrantedRemoteAppsApi):
serializer_class = TreeNodeSerializer serializer_class = TreeNodeSerializer
permission_classes = (IsOrgAdminOrAppUser,) permission_classes = (IsOrgAdminOrAppUser,)
def get_serializer(self, *args, **kwargs): def get_serializer(self, remote_apps=None, *args, **kwargs):
only_remote_app = self.request.query_params.get('only', '0') == '1' only_remote_app = self.request.query_params.get('only', '0') == '1'
tree_root = None tree_root = None
data = [] data = []
if not only_remote_app: if not only_remote_app:
tree_root = construct_remote_apps_tree_root() tree_root = construct_remote_apps_tree_root()
data.append(tree_root) data.append(tree_root)
queryset = super().get_queryset() for remote_app in remote_apps:
for remote_app in queryset:
node = parse_remote_app_to_tree_node(tree_root, remote_app) node = parse_remote_app_to_tree_node(tree_root, remote_app)
data.append(node) data.append(node)
data.sort() data.sort()
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
from orgs.utils import set_to_root_org from orgs.utils import set_to_root_org
__all__ = [ __all__ = [
'AssetsFilterMixin', 'RemoteAppFilterMixin', 'ChangeOrgIfNeedMixin', 'AssetsFilterMixin', 'ChangeOrgIfNeedMixin',
] ]
...@@ -68,41 +68,6 @@ class AssetsFilterMixin(object): ...@@ -68,41 +68,6 @@ class AssetsFilterMixin(object):
return _queryset return _queryset
class RemoteAppFilterMixin(object):
"""
对RemoteApp进行过滤(查询,排序)
"""
def filter_queryset(self, queryset):
queryset = self.search_remote_apps(queryset)
queryset = self.sort_remote_apps(queryset)
return queryset
def search_remote_apps(self, queryset):
value = self.request.query_params.get('search')
if not value:
return queryset
queryset = [
remote_app for remote_app in queryset if value in remote_app.name
]
return queryset
def sort_remote_apps(self, queryset):
order_by = self.request.query_params.get('order')
if not order_by:
order_by = 'name'
if order_by.startswith('-'):
order_by = order_by.lstrip('-')
reverse = True
else:
reverse = False
queryset = sorted(
queryset, key=lambda x: getattr(x, order_by), reverse=reverse
)
return queryset
class ChangeOrgIfNeedMixin(object): class ChangeOrgIfNeedMixin(object):
@staticmethod @staticmethod
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment