fix bugs due to problem id
This commit is contained in:
@@ -18,7 +18,8 @@ class ProblemAPI(APIView):
|
||||
problem_id = request.GET.get("problem_id")
|
||||
if problem_id:
|
||||
try:
|
||||
problem = Problem.objects.select_related("created_by").get(_id=problem_id, visible=True)
|
||||
problem = Problem.objects.select_related("created_by")\
|
||||
.get(_id=problem_id, contest_id__isnull=True, visible=True)
|
||||
return self.success(ProblemSerializer(problem).data)
|
||||
except Problem.DoesNotExist:
|
||||
return self.error("Problem does not exist")
|
||||
@@ -27,7 +28,7 @@ class ProblemAPI(APIView):
|
||||
if not limit:
|
||||
return self.error("Limit is needed")
|
||||
|
||||
problems = Problem.objects.select_related("created_by").filter(visible=True)
|
||||
problems = Problem.objects.select_related("created_by").filter(contest_id__isnull=True, visible=True)
|
||||
# 按照标签筛选
|
||||
tag_text = request.GET.get("tag")
|
||||
if tag_text:
|
||||
@@ -54,9 +55,9 @@ class ProblemAPI(APIView):
|
||||
oi_problems_status = profile.oi_problems_status.get("problems", {})
|
||||
for problem in data["results"]:
|
||||
if problem["rule_type"] == ProblemRuleType.ACM:
|
||||
problem["my_status"] = acm_problems_status.get(problem["_id"], None)
|
||||
problem["my_status"] = acm_problems_status.get(str(problem["id"]), None)
|
||||
else:
|
||||
problem["my_status"] = oi_problems_status.get(problem["_id"], None)
|
||||
problem["my_status"] = oi_problems_status.get(str(problem["id"]), None)
|
||||
return self.success(data)
|
||||
|
||||
|
||||
@@ -83,5 +84,5 @@ class ContestProblemAPI(APIView):
|
||||
else:
|
||||
problems_status = profile.oi_problems_status.get("contest_problems", {})
|
||||
for problem in data:
|
||||
problem["my_status"] = problems_status.get(problem["_id"], None)
|
||||
return self.success(ContestProblemSerializer(contest_problems, many=True).data)
|
||||
problem["my_status"] = problems_status.get(str(problem["id"]), None)
|
||||
return self.success(data)
|
||||
|
||||
Reference in New Issue
Block a user