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