From bbf32501613b407865b1c15aaddeb70caf5b95a6 Mon Sep 17 00:00:00 2001 From: feng626 <1304903146@qq.com> Date: Wed, 23 Feb 2022 14:43:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/api/user.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/apps/users/api/user.py b/apps/users/api/user.py index 7fcd29f18..dc818a5cb 100644 --- a/apps/users/api/user.py +++ b/apps/users/api/user.py @@ -23,7 +23,6 @@ from ..models import User from ..signals import post_user_create from ..filters import UserFilter - logger = get_logger(__name__) __all__ = [ 'UserViewSet', 'UserChangePasswordApi', @@ -40,7 +39,7 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, BulkModelViewSet): 'invite': InviteSerializer, } ordering_fields = ('name',) - ordering = ('name', ) + ordering = ('name',) rbac_perms = { 'suggestion': 'users.match_user', 'invite': 'users.invite_user', @@ -52,6 +51,19 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, BulkModelViewSet): queryset = super().get_queryset().prefetch_related('groups') return queryset + def list(self, request, *args, **kwargs): + queryset = self.filter_queryset(self.get_queryset()) + + page = self.paginate_queryset(queryset) + if page is not None: + page = self.set_users_roles_for_cache(page) + serializer = self.get_serializer(page, many=True) + return self.get_paginated_response(serializer.data) + + queryset = self.set_users_roles_for_cache(queryset) + serializer = self.get_serializer(queryset, many=True) + return Response(serializer.data) + @staticmethod def set_users_roles_for_cache(queryset): # Todo: 未来有机会用 SQL 实现 @@ -80,11 +92,6 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, BulkModelViewSet): u.system_roles.cache_set(system_roles) return queryset_list - def filter_queryset(self, queryset): - queryset = super().filter_queryset(queryset) - queryset_list = self.set_users_roles_for_cache(queryset) - return queryset_list - def perform_create(self, serializer): users = serializer.save() if isinstance(users, User):