mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2024-09-21 00:13:18 +00:00
修改用户信息api
This commit is contained in:
parent
78a8999b44
commit
b931724c9b
@ -35,6 +35,7 @@ class UserSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class UserProfileSerializer(serializers.ModelSerializer):
|
class UserProfileSerializer(serializers.ModelSerializer):
|
||||||
|
user = UserSerializer()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = UserProfile
|
model = UserProfile
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
|
|
||||||
from ..views.user import (SSOAPI, AvatarUploadAPI, TwoFactorAuthAPI,
|
from ..views.user import (SSOAPI, AvatarUploadAPI, TwoFactorAuthAPI,
|
||||||
UserNameAPI, UserInfoAPI, UserProfileAPI)
|
UserNameAPI, UserProfileAPI)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r"^username/?$", UserNameAPI.as_view(), name="user_name_api"),
|
url(r"^username/?$", UserNameAPI.as_view(), name="user_name_api"),
|
||||||
url(r"^user/(?P<username>\w+)/?$", UserInfoAPI.as_view(), name="user_info_api"),
|
|
||||||
url(r"^profile/?$", UserProfileAPI.as_view(), name="user_profile_api"),
|
url(r"^profile/?$", UserProfileAPI.as_view(), name="user_profile_api"),
|
||||||
url(r"^avatar/upload/?$", AvatarUploadAPI.as_view(), name="avatar_upload_api"),
|
url(r"^avatar/upload/?$", AvatarUploadAPI.as_view(), name="avatar_upload_api"),
|
||||||
url(r"^sso/?$", SSOAPI.as_view(), name="sso_api"),
|
url(r"^sso/?$", SSOAPI.as_view(), name="sso_api"),
|
||||||
|
@ -15,11 +15,12 @@ from utils.shortcuts import rand_str
|
|||||||
from ..decorators import login_required
|
from ..decorators import login_required
|
||||||
from ..models import User, UserProfile
|
from ..models import User, UserProfile
|
||||||
from ..serializers import (SSOSerializer, TwoFactorAuthCodeSerializer,
|
from ..serializers import (SSOSerializer, TwoFactorAuthCodeSerializer,
|
||||||
UserSerializer, UserProfileSerializer,
|
UserProfileSerializer,
|
||||||
EditUserProfileSerializer, AvatarUploadForm)
|
EditUserProfileSerializer, AvatarUploadForm)
|
||||||
|
|
||||||
|
|
||||||
class UserNameAPI(APIView):
|
class UserNameAPI(APIView):
|
||||||
|
@method_decorator(ensure_csrf_cookie)
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
"""
|
"""
|
||||||
Return Username to valid login status
|
Return Username to valid login status
|
||||||
@ -37,37 +38,22 @@ class UserNameAPI(APIView):
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
class UserInfoAPI(APIView):
|
|
||||||
# @login_required
|
|
||||||
@method_decorator(ensure_csrf_cookie)
|
|
||||||
def get(self, request, **kwargs):
|
|
||||||
"""
|
|
||||||
Return user info api
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
user = User.objects.get(username=kwargs["username"])
|
|
||||||
except User.DoesNotExist:
|
|
||||||
return self.error("User does not exist")
|
|
||||||
profile = UserProfile.objects.get(user=user)
|
|
||||||
dit = UserProfileSerializer(profile).data
|
|
||||||
dit["user"] = UserSerializer(user).data
|
|
||||||
return self.success(dit)
|
|
||||||
|
|
||||||
|
|
||||||
class UserProfileAPI(APIView):
|
class UserProfileAPI(APIView):
|
||||||
@login_required
|
@login_required
|
||||||
def get(self, request):
|
def get(self, request, **kwargs):
|
||||||
"""
|
"""
|
||||||
Return user info api
|
Return user info according username or user_id
|
||||||
"""
|
"""
|
||||||
|
username = request.GET.get("username")
|
||||||
try:
|
try:
|
||||||
user = User.objects.get(id=request.user.id)
|
if username:
|
||||||
|
user = User.objects.get(username=username)
|
||||||
|
else:
|
||||||
|
user = request.user
|
||||||
except User.DoesNotExist:
|
except User.DoesNotExist:
|
||||||
return self.error("User does not exist")
|
return self.error("User does not exist")
|
||||||
profile = UserProfile.objects.get(user=user)
|
profile = UserProfile.objects.get(user=user)
|
||||||
dit = UserProfileSerializer(profile).data
|
return self.success(UserProfileSerializer(profile).data)
|
||||||
dit["user"] = UserSerializer(user).data
|
|
||||||
return self.success(dit)
|
|
||||||
|
|
||||||
@validate_serializer(EditUserProfileSerializer)
|
@validate_serializer(EditUserProfileSerializer)
|
||||||
@login_required
|
@login_required
|
||||||
|
@ -65,6 +65,7 @@ class APIView(View):
|
|||||||
for parser in self.request_parsers:
|
for parser in self.request_parsers:
|
||||||
if content_type.startswith(parser.content_type):
|
if content_type.startswith(parser.content_type):
|
||||||
break
|
break
|
||||||
|
# else means the for loop is not interrupted by break
|
||||||
else:
|
else:
|
||||||
raise ValueError("unknown content_type '%s'" % content_type)
|
raise ValueError("unknown content_type '%s'" % content_type)
|
||||||
if body:
|
if body:
|
||||||
|
Loading…
Reference in New Issue
Block a user