mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2024-09-21 08:23:20 +00:00
fix admin update user real_name problem
This commit is contained in:
parent
092bf9a73f
commit
10ecb79152
@ -69,15 +69,24 @@ class UserSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class UserProfileSerializer(serializers.ModelSerializer):
|
class UserProfileSerializer(serializers.ModelSerializer):
|
||||||
user = UserSerializer()
|
user = UserSerializer()
|
||||||
|
real_name = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = UserProfile
|
model = UserProfile
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.show_real_name = kwargs.pop("show_real_name", False)
|
||||||
|
super(UserProfileSerializer, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def get_real_name(self, obj):
|
||||||
|
return obj.real_name if self.show_real_name else None
|
||||||
|
|
||||||
|
|
||||||
class EditUserSerializer(serializers.Serializer):
|
class EditUserSerializer(serializers.Serializer):
|
||||||
id = serializers.IntegerField()
|
id = serializers.IntegerField()
|
||||||
username = serializers.CharField(max_length=32)
|
username = serializers.CharField(max_length=32)
|
||||||
|
real_name = serializers.CharField(max_length=32, allow_blank=True)
|
||||||
password = serializers.CharField(min_length=6, allow_blank=True, required=False, default=None)
|
password = serializers.CharField(min_length=6, allow_blank=True, required=False, default=None)
|
||||||
email = serializers.EmailField(max_length=64)
|
email = serializers.EmailField(max_length=64)
|
||||||
admin_type = serializers.ChoiceField(choices=(AdminType.REGULAR_USER, AdminType.ADMIN, AdminType.SUPER_ADMIN))
|
admin_type = serializers.ChoiceField(choices=(AdminType.REGULAR_USER, AdminType.ADMIN, AdminType.SUPER_ADMIN))
|
||||||
|
@ -95,6 +95,8 @@ class UserAdminAPI(APIView):
|
|||||||
user.save()
|
user.save()
|
||||||
if pre_username != user.username:
|
if pre_username != user.username:
|
||||||
Submission.objects.filter(username=pre_username).update(username=user.username)
|
Submission.objects.filter(username=pre_username).update(username=user.username)
|
||||||
|
|
||||||
|
UserProfile.objects.filter(user=user).update(real_name=data["real_name"])
|
||||||
return self.success(UserAdminSerializer(user).data)
|
return self.success(UserAdminSerializer(user).data)
|
||||||
|
|
||||||
@super_admin_required
|
@super_admin_required
|
||||||
|
@ -37,15 +37,18 @@ class UserProfileAPI(APIView):
|
|||||||
user = request.user
|
user = request.user
|
||||||
if not user.is_authenticated():
|
if not user.is_authenticated():
|
||||||
return self.success()
|
return self.success()
|
||||||
|
show_real_name = False
|
||||||
username = request.GET.get("username")
|
username = request.GET.get("username")
|
||||||
try:
|
try:
|
||||||
if username:
|
if username:
|
||||||
user = User.objects.get(username=username, is_disabled=False)
|
user = User.objects.get(username=username, is_disabled=False)
|
||||||
else:
|
else:
|
||||||
user = request.user
|
user = request.user
|
||||||
|
# api返回的是自己的信息,可以返real_name
|
||||||
|
show_real_name = True
|
||||||
except User.DoesNotExist:
|
except User.DoesNotExist:
|
||||||
return self.error("User does not exist")
|
return self.error("User does not exist")
|
||||||
return self.success(UserProfileSerializer(user.userprofile).data)
|
return self.success(UserProfileSerializer(user.userprofile, show_real_name=show_real_name).data)
|
||||||
|
|
||||||
@validate_serializer(EditUserProfileSerializer)
|
@validate_serializer(EditUserProfileSerializer)
|
||||||
@login_required
|
@login_required
|
||||||
@ -55,7 +58,7 @@ class UserProfileAPI(APIView):
|
|||||||
for k, v in data.items():
|
for k, v in data.items():
|
||||||
setattr(user_profile, k, v)
|
setattr(user_profile, k, v)
|
||||||
user_profile.save()
|
user_profile.save()
|
||||||
return self.success(UserProfileSerializer(user_profile).data)
|
return self.success(UserProfileSerializer(user_profile, show_real_name=True).data)
|
||||||
|
|
||||||
|
|
||||||
class AvatarUploadAPI(APIView):
|
class AvatarUploadAPI(APIView):
|
||||||
|
Loading…
Reference in New Issue
Block a user