This commit is contained in:
2026-06-03 04:50:46 -06:00
parent 59dbb6868f
commit 809673e64f
2 changed files with 8 additions and 6 deletions

View File

@@ -145,9 +145,11 @@ class ProblemAPI(AsyncAPIView):
class ContestProblemAPI(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: 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", {}) problems_status = profile.acm_problems_status.get("contest_problems", {})
for problem in queryset_values: for problem in queryset_values:
problem["my_status"] = problems_status.get(str(problem["id"]), {}).get("status") 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.") return self.error("Problem does not exist.")
if self.contest.problem_details_permission(request.user): if self.contest.problem_details_permission(request.user):
problem_data = await self.async_serialize_data(ProblemSerializer, problem) 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: else:
problem_data = await self.async_serialize_data(ProblemSafeSerializer, problem) problem_data = await self.async_serialize_data(ProblemSafeSerializer, problem)
return self.success(problem_data) 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) 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): if self.contest.problem_details_permission(request.user):
data = await self.async_serialize_data(ProblemListSerializer, [p async for p in contest_problems], many=True) 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: else:
data = await self.async_serialize_data(ProblemSafeSerializer, [p async for p in contest_problems], many=True) data = await self.async_serialize_data(ProblemSafeSerializer, [p async for p in contest_problems], many=True)
return self.success(data) return self.success(data)

View File

@@ -102,7 +102,7 @@ class SubmissionAPI(AsyncAPIView):
if not submission_id: if not submission_id:
return self.error("Parameter id doesn't exist") return self.error("Parameter id doesn't exist")
try: try:
submission = await Submission.objects.select_related("problem").aget( submission = await Submission.objects.select_related("problem", "contest").aget(
id=submission_id id=submission_id
) )
except Submission.DoesNotExist: except Submission.DoesNotExist:
@@ -126,7 +126,7 @@ class SubmissionAPI(AsyncAPIView):
@login_required @login_required
async def put(self, request): async def put(self, request):
try: try:
submission = await Submission.objects.select_related("problem").aget( submission = await Submission.objects.select_related("problem", "contest").aget(
id=request.data["id"] id=request.data["id"]
) )
except Submission.DoesNotExist: except Submission.DoesNotExist: