From 48f65d1a1434a75f4755ca92253d1dbd152032b6 Mon Sep 17 00:00:00 2001 From: zema1 Date: Thu, 9 Nov 2017 11:21:41 +0800 Subject: [PATCH] fix error in refresh displayID --- account/views/oj.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/account/views/oj.py b/account/views/oj.py index 50aa9db6..eccbb3f7 100644 --- a/account/views/oj.py +++ b/account/views/oj.py @@ -385,13 +385,19 @@ class UserRankAPI(APIView): class ProfileProblemDisplayIDRefreshAPI(APIView): @login_required def get(self, request): + user_id = request.GET.get("user_id") + if not user_id: + return self.error("Invalid parameter, user_id is required") + if request.user.id != user_id: + return self.error("Only user self can require a refresh") profile = request.user.userprofile - acm_problems = profile.acm_problems_status["problems"] - oi_problems = profile.oi_problems_status["problems"] + acm_problems = profile.acm_problems_status.get("problems", {}) + oi_problems = profile.oi_problems_status.get("problems", {}) ids = list(acm_problems.keys()) + list(oi_problems.keys()) + if not ids: + return self.success() display_ids = Problem.objects.filter(id__in=ids).values_list("_id", flat=True) id_map = dict(zip(ids, display_ids)) - print(id_map) for k, v in acm_problems.items(): v["_id"] = id_map[k] for k, v in oi_problems.items():