fix
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user