增加修改个人资料的功能

This commit is contained in:
virusdefender
2015-11-09 21:11:39 +08:00
parent e4888417bf
commit f6b37fa42a
8 changed files with 107 additions and 18 deletions

View File

@@ -61,4 +61,14 @@ class ResetPasswordSerializer(serializers.Serializer):
class SSOSerializer(serializers.Serializer):
token = serializers.CharField(max_length=40)
token = serializers.CharField(max_length=40)
class EditUserProfileSerializer(serializers.Serializer):
avatar = serializers.CharField(max_length=50, required=False, default=None)
phone = serializers.CharField(min_length=11, max_length=11, required=False, allow_blank=True, default=None)
blog = serializers.URLField(required=False, allow_blank=True, default=None)
mood = serializers.CharField(max_length=60, required=False, allow_blank=True, default=None)
hduoj_username = serializers.CharField(max_length=30, required=False, allow_blank=True, default=None)
bestcoder_username = serializers.CharField(max_length=30, required=False, allow_blank=True, default=None)
codeforces_username = serializers.CharField(max_length=30, required=False, allow_blank=True, default=None)

View File

@@ -18,11 +18,11 @@ from mail.tasks import send_email
from .decorators import login_required
from .models import User, UserProfile
from .serializers import (UserLoginSerializer, UsernameCheckSerializer,
UserRegisterSerializer, UserChangePasswordSerializer,
EmailCheckSerializer, UserSerializer, EditUserSerializer,
from .serializers import (UserLoginSerializer, UserRegisterSerializer,
UserChangePasswordSerializer,
UserSerializer, EditUserSerializer,
ApplyResetPasswordSerializer, ResetPasswordSerializer,
SSOSerializer)
SSOSerializer, EditUserProfileSerializer)
from .decorators import super_admin_required
@@ -300,6 +300,28 @@ def user_index_page(request, username):
return render(request, "oj/account/user_index.html", {"user": user, "blog_link": blog_link})
class UserProfileAPIView(APIView):
@login_required
def put(self, request):
serializer = EditUserProfileSerializer(data=request.data)
if serializer.is_valid():
data = serializer.data
user_profile = request.user.userprofile
if data["avatar"]:
user_profile.avatar = data["avatar"]
user_profile.mood = data["mood"]
user_profile.hduoj_username = data["hduoj_username"]
user_profile.bestcoder_username = data["bestcoder_username"]
user_profile.codeforces_username = data["codeforces_username"]
user_profile.blog = data["blog"]
user_profile.save()
return success_response(u"修改成功")
else:
return serializer_invalid_response(serializer)
class SSOAPIView(APIView):
def post(self, request):
serializer = SSOSerializer(data=request.data)