From 3393f183992a3e912211bdf8dc2ba0f03c66906e Mon Sep 17 00:00:00 2001 From: xinwen Date: Thu, 11 Jun 2020 18:24:56 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=20=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=9B=B8=E5=85=B3=20Serializer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/api/user.py | 6 +++++- apps/users/serializers/user.py | 14 +++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/apps/users/api/user.py b/apps/users/api/user.py index 8729f4dcc..8fc184375 100644 --- a/apps/users/api/user.py +++ b/apps/users/api/user.py @@ -14,6 +14,7 @@ from common.mixins import CommonApiMixin from common.utils import get_logger from orgs.utils import current_org from .. import serializers +from ..serializers import UserSerializer, UserRetrieveSerializer from .mixins import UserQuerysetMixin from ..models import User from ..signals import post_user_create @@ -29,8 +30,11 @@ __all__ = [ class UserViewSet(CommonApiMixin, UserQuerysetMixin, BulkModelViewSet): filter_fields = ('username', 'email', 'name', 'id', 'source') search_fields = filter_fields - serializer_class = serializers.UserSerializer permission_classes = (IsOrgAdmin, CanUpdateDeleteUser) + serializer_classes = { + 'default': UserSerializer, + 'retrieve': UserRetrieveSerializer + } def get_queryset(self): return super().get_queryset().prefetch_related('groups') diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index fcbde6150..37d820b65 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -16,7 +16,8 @@ __all__ = [ 'UserSerializer', 'UserPKUpdateSerializer', 'ChangeUserPasswordSerializer', 'ResetOTPSerializer', 'UserProfileSerializer', 'UserOrgSerializer', - 'UserUpdatePasswordSerializer', 'UserUpdatePublicKeySerializer' + 'UserUpdatePasswordSerializer', 'UserUpdatePublicKeySerializer', + 'UserRetrieveSerializer' ] @@ -40,7 +41,6 @@ class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer): login_blocked = serializers.SerializerMethodField() can_update = serializers.SerializerMethodField() can_delete = serializers.SerializerMethodField() - login_confirm_settings = serializers.PrimaryKeyRelatedField(read_only=True, source='login_confirm_setting.reviewers', many=True) key_prefix_block = "_LOGIN_BLOCK_{}" @@ -60,7 +60,7 @@ class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer): ] fields = fields_small + [ 'groups', 'role', 'groups_display', 'role_display', - 'can_update', 'can_delete', 'login_blocked', 'login_confirm_settings' + 'can_update', 'can_delete', 'login_blocked', ] extra_kwargs = { @@ -158,6 +158,14 @@ class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer): return blocked +class UserRetrieveSerializer(UserSerializer): + login_confirm_settings = serializers.PrimaryKeyRelatedField(read_only=True, + source='login_confirm_setting.reviewers', many=True) + + class Meta(UserSerializer.Meta): + fields = UserSerializer.Meta.fields + ['login_confirm_settings'] + + class UserPKUpdateSerializer(serializers.ModelSerializer): class Meta: model = User