diff --git a/account/serializers.py b/account/serializers.py index 0aac07ae..0d92ae7e 100644 --- a/account/serializers.py +++ b/account/serializers.py @@ -25,6 +25,7 @@ class UserRegisterSerializer(serializers.Serializer): password = serializers.CharField(max_length=30, min_length=6) email = serializers.EmailField(max_length=254) captcha = serializers.CharField(max_length=4, min_length=4) + student_id = serializers.CharField(max_length=15, required=False, default=None) class UserChangePasswordSerializer(serializers.Serializer): @@ -74,6 +75,7 @@ class EditUserProfileSerializer(serializers.Serializer): codeforces_username = serializers.CharField(max_length=30, required=False, allow_blank=True, default='') school = serializers.CharField(max_length=200, required=False, allow_blank=True, default='') phone_number = serializers.CharField(max_length=15, required=False, allow_blank=True, default='') + student_id = serializers.CharField(max_length=15, required=False, default="") class UserProfileSerializer(serializers.ModelSerializer): @@ -81,4 +83,4 @@ class UserProfileSerializer(serializers.ModelSerializer): class Meta: model = UserProfile fields = ["avatar", "blog", "mood", "hduoj_username", "bestcoder_username", "codeforces_username", - "rank", "accepted_number", "submissions_number", "problems_status", "phone_number", "school"] + "rank", "accepted_number", "submissions_number", "problems_status", "phone_number", "school", "student_id"] diff --git a/account/views.py b/account/views.py index 2ba5739c..d1e6b2a6 100644 --- a/account/views.py +++ b/account/views.py @@ -97,7 +97,7 @@ class UserRegisterAPIView(APIView): email=data["email"]) user.set_password(data["password"]) user.save() - UserProfile.objects.create(user=user, school=data["school"]) + UserProfile.objects.create(user=user, school=data["school"], student_id=data["student_id"]) return success_response(u"注册成功!") else: return serializer_invalid_response(serializer) @@ -262,6 +262,7 @@ class UserProfileAPIView(APIView): user_profile.codeforces_username = data["codeforces_username"] 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.save() return success_response(u"修改成功") diff --git a/static/src/js/app/oj/account/register.js b/static/src/js/app/oj/account/register.js index ef23a38c..0557cfbd 100644 --- a/static/src/js/app/oj/account/register.js +++ b/static/src/js/app/oj/account/register.js @@ -1,16 +1,18 @@ require(["jquery", "bsAlert", "csrfToken", "validator"], function ($, bsAlert, csrfTokenHeader) { + $("#stu_id").hide(); $('form').validator().on('submit', function (e) { if (!e.isDefaultPrevented()) { var username = $("#username").val(); var realName = $("#real_name").val(); var school = $('#school').val(); + var student_id = $('#student_id').val(); var password = $("#password").val(); var email = $("#email").val(); var captcha = $("#captcha").val(); $.ajax({ beforeSend: csrfTokenHeader, url: "/api/register/", - data: {username: username, school: school, real_name: realName, password: password, email: email, captcha:captcha}, + data: {username: username, school: school, student_id: student_id, real_name: realName, password: password, email: email, captcha:captcha}, dataType: "json", method: "post", success: function (data) { @@ -29,6 +31,16 @@ require(["jquery", "bsAlert", "csrfToken", "validator"], function ($, bsAlert, c return false; } }); + + $("#school").blur(function () { + if ($("#school").val() == "青岛大学") { + $("#stu_id").show(); + } + if ($("#school").val() == "qdu") { + $("#stu_id").show(); + $("#school").val("青岛大学"); + } + }); function refresh_captcha() { $("#captcha-img")[0].src = "/captcha/?" + Math.random(); $("#captcha")[0].value = ""; diff --git a/static/src/js/app/oj/account/settings.js b/static/src/js/app/oj/account/settings.js index b4538ee5..2c485300 100644 --- a/static/src/js/app/oj/account/settings.js +++ b/static/src/js/app/oj/account/settings.js @@ -8,7 +8,7 @@ require(["jquery", "bsAlert", "csrfToken", "validator"], function ($, bsAlert, c var blog = $("#blog").val(); var mood = $("#mood").val(); var school = $("#school").val(); - + var student_id = $("#student_id").val(); $.ajax({ beforeSend: csrfTokenHeader, url: "/api/account/userprofile/", @@ -19,7 +19,8 @@ require(["jquery", "bsAlert", "csrfToken", "validator"], function ($, bsAlert, c codeforces_username: codeforces_username, blog: blog, mood: mood, - school: school + school: school, + student_id: student_id }, dataType: "json", method: "put", diff --git a/template/src/oj/account/register.html b/template/src/oj/account/register.html index f3b990b3..50436111 100644 --- a/template/src/oj/account/register.html +++ b/template/src/oj/account/register.html @@ -19,10 +19,14 @@
- +
+
+ + +
diff --git a/template/src/oj/account/settings.html b/template/src/oj/account/settings.html index ebfee385..d15411df 100644 --- a/template/src/oj/account/settings.html +++ b/template/src/oj/account/settings.html @@ -69,9 +69,16 @@
+
+ + +
+ +
+ value="{% if request.user.userprofile.school %}{{ request.user.userprofile.blog }}{% endif %}">