From 809673e64f58564ef12ba205d8a93865212ecdb4 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Wed, 3 Jun 2026 04:50:46 -0600 Subject: [PATCH] fix --- problem/views/oj.py | 10 ++++++---- submission/views/oj.py | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/problem/views/oj.py b/problem/views/oj.py index 40d1635..c47fe05 100644 --- a/problem/views/oj.py +++ b/problem/views/oj.py @@ -145,9 +145,11 @@ class ProblemAPI(AsyncAPIView): class ContestProblemAPI(AsyncAPIView): - def _add_problem_status(self, request, queryset_values): + async def _add_problem_status(self, request, queryset_values): if request.user.is_authenticated: - profile = request.user.userprofile + from account.models import UserProfile + + profile = await UserProfile.objects.aget(user=request.user) problems_status = profile.acm_problems_status.get("contest_problems", {}) for problem in queryset_values: problem["my_status"] = problems_status.get(str(problem["id"]), {}).get("status") @@ -162,7 +164,7 @@ class ContestProblemAPI(AsyncAPIView): return self.error("Problem does not exist.") if self.contest.problem_details_permission(request.user): problem_data = await self.async_serialize_data(ProblemSerializer, problem) - self._add_problem_status(request, [problem_data]) + await self._add_problem_status(request, [problem_data]) else: problem_data = await self.async_serialize_data(ProblemSafeSerializer, problem) return self.success(problem_data) @@ -170,7 +172,7 @@ class ContestProblemAPI(AsyncAPIView): contest_problems = Problem.objects.select_related("created_by").prefetch_related("tags").filter(contest=self.contest, visible=True) if self.contest.problem_details_permission(request.user): data = await self.async_serialize_data(ProblemListSerializer, [p async for p in contest_problems], many=True) - self._add_problem_status(request, data) + await self._add_problem_status(request, data) else: data = await self.async_serialize_data(ProblemSafeSerializer, [p async for p in contest_problems], many=True) return self.success(data) diff --git a/submission/views/oj.py b/submission/views/oj.py index a2442da..dab57b6 100644 --- a/submission/views/oj.py +++ b/submission/views/oj.py @@ -102,7 +102,7 @@ class SubmissionAPI(AsyncAPIView): if not submission_id: return self.error("Parameter id doesn't exist") try: - submission = await Submission.objects.select_related("problem").aget( + submission = await Submission.objects.select_related("problem", "contest").aget( id=submission_id ) except Submission.DoesNotExist: @@ -126,7 +126,7 @@ class SubmissionAPI(AsyncAPIView): @login_required async def put(self, request): try: - submission = await Submission.objects.select_related("problem").aget( + submission = await Submission.objects.select_related("problem", "contest").aget( id=request.data["id"] ) except Submission.DoesNotExist: