diff --git a/account/urls/user.py b/account/urls/user.py new file mode 100644 index 00000000..7ddca03c --- /dev/null +++ b/account/urls/user.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from django.conf.urls import url + +from ..views.user import UserProfileAPI + +urlpatterns = [ + url(r"^profile$", UserProfileAPI.as_view(), name="user_profile_api"), +] diff --git a/account/views/user.py b/account/views/user.py new file mode 100644 index 00000000..f20a77b0 --- /dev/null +++ b/account/views/user.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from django.utils.translation import ugettext as _ + +from utils.api import APIView, validate_serializer + +from ..decorators import login_required +from ..serializers import EditUserSerializer, UserSerializer + + +# class UserInfoAPI(APIView): +# @login_required +# def get(self, request): +# """ +# Return user info api +# """ +# return self.success(UserSerializer(request.user).data) + + +class UserProfileAPI(APIView): + @login_required + def get(self, request): + """ + Return user info api + """ + return self.success(UserSerializer(request.user).data) + + @validate_serializer(EditUserSerializer) + @login_required + def put(self, request): + data = request.data + user_profile = request.user.userprofile + if data["avatar"]: + user_profile.avatar = data["avatar"] + else: + user_profile.mood = data["mood"] + user_profile.blog = data["blog"] + user_profile.school = data["school"] + user_profile.student_id = data["student_id"] + user_profile.phone_number = data["phone_number"] + user_profile.major = data["major"] + # Timezone & language 暂时不加 + user_profile.save() + return self.success(_("Succeeded")) + + diff --git a/oj/urls.py b/oj/urls.py index b8cc62d1..79e6b038 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -3,6 +3,7 @@ from django.conf.urls import include, url urlpatterns = [ url(r"^api/", include("account.urls.oj")), url(r"^api/admin/", include("account.urls.admin")), + url(r"^api/account/", include("account.urls.user")), url(r"^api/admin/", include("announcement.urls.admin")), url(r"^api/", include("conf.urls.oj")), url(r"^api/admin/", include("conf.urls.admin")),