mirror of https://github.com/jumpserver/jumpserver
perf: 修复 role user serializer 问题
parent
58341a9e85
commit
c4982dd3b5
|
@ -72,7 +72,7 @@ class RoleViewSet(JMSModelViewSet):
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def get_serializer(self, *args, **kwargs):
|
def get_serializer(self, *args, **kwargs):
|
||||||
if len(args) == 1:
|
if len(args) == 1 and kwargs.get('many', False):
|
||||||
queryset = self.set_users_amount(args[0])
|
queryset = self.set_users_amount(args[0])
|
||||||
args = (queryset,)
|
args = (queryset,)
|
||||||
return super().get_serializer(*args, **kwargs)
|
return super().get_serializer(*args, **kwargs)
|
||||||
|
|
|
@ -51,17 +51,20 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, SuggestionMixin, BulkModelV
|
||||||
queryset = super().get_queryset().prefetch_related('groups')
|
queryset = super().get_queryset().prefetch_related('groups')
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def get_serializer(self, *args, **kwargs):
|
|
||||||
if len(args) == 0:
|
|
||||||
queryset = self.set_users_roles_for_cache(args[0])
|
|
||||||
args = (queryset,)
|
|
||||||
return super().get_serializer(*args, **kwargs)
|
|
||||||
|
|
||||||
@action(methods=['get'], detail=False, url_path='suggestions')
|
@action(methods=['get'], detail=False, url_path='suggestions')
|
||||||
def match(self, request, *args, **kwargs):
|
def match(self, request, *args, **kwargs):
|
||||||
with tmp_to_root_org():
|
with tmp_to_root_org():
|
||||||
return super().match(request, *args, **kwargs)
|
return super().match(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def get_serializer(self, *args, **kwargs):
|
||||||
|
"""重写 get_serializer,用于设置用户的角色缓存
|
||||||
|
放到 paginate_queryset 里面会导致 导出有问题, 因为导出的时候,没有 pager
|
||||||
|
"""
|
||||||
|
if len(args) == 1 and kwargs.get('many'):
|
||||||
|
queryset = self.set_users_roles_for_cache(args[0])
|
||||||
|
args = (queryset,)
|
||||||
|
return super().get_serializer(*args, **kwargs)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def set_users_roles_for_cache(queryset):
|
def set_users_roles_for_cache(queryset):
|
||||||
# Todo: 未来有机会用 SQL 实现
|
# Todo: 未来有机会用 SQL 实现
|
||||||
|
|
Loading…
Reference in New Issue