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):