修改submission api

This commit is contained in:
zemal 2017-07-04 17:32:50 +08:00
parent b931724c9b
commit 12ee85ef8f
2 changed files with 16 additions and 32 deletions

View File

@ -3,9 +3,5 @@ from django.conf.urls import url
from ..views.oj import (SubmissionAPI, SubmissionListAPI, SubmissionDetailAPI) from ..views.oj import (SubmissionAPI, SubmissionListAPI, SubmissionDetailAPI)
urlpatterns = [ urlpatterns = [
url(r"^submission/?$", SubmissionAPI.as_view(), name="submission_api"), url(r"^submissions/?$", SubmissionAPI.as_view(), name="submission_api"),
url(r"^submission/(?P<submission_id>\w+)/?$", SubmissionDetailAPI.as_view(), name="submission_detail_api"),
url(r"^submissions/?$", SubmissionListAPI.as_view(), name="submission_list_api"),
url(r"^submissions/(?P<page>\d+)/?$", SubmissionListAPI.as_view(), name="submission_list_page_api"),
# MyProblemSubmissionListAPI
] ]

View File

@ -37,7 +37,7 @@ def _submit(response, user, problem_id, language, code, contest_id=None):
code=code, code=code,
problem_id=problem.id, problem_id=problem.id,
contest_id=contest_id) contest_id=contest_id)
# 暂时保留 方便排错 # todo 暂时保留 方便排错
# JudgeDispatcher(submission.id, problem.id).judge() # JudgeDispatcher(submission.id, problem.id).judge()
judge_task.delay(submission.id, problem.id) judge_task.delay(submission.id, problem.id)
return response.success({"submission_id": submission.id}) return response.success({"submission_id": submission.id})
@ -53,40 +53,28 @@ class SubmissionAPI(APIView):
@login_required @login_required
def get(self, request): def get(self, request):
submission_id = request.GET.get("id") submission_id = request.GET.get("id")
if not submission_id: if submission_id:
return self.error("Parameter error") try:
try: submission = Submission.objects.get(id=submission_id, user_id=request.user.id)
submission = Submission.objects.get(id=submission_id, user_id=request.user.id) except Submission.DoesNotExist:
except Submission.DoesNotExist: return self.error("Submission not exist")
return self.error("Submission not exist") return self.success(SubmissionModelSerializer(submission).data)
return self.success(SubmissionModelSerializer(submission).data)
problem_id = request.GET.get('problem_id')
subs = Submission.objects.filter(contest_id__isnull=True)
if problem_id:
subs = subs.filter(problem_id=problem_id)
class MyProblemSubmissionListAPI(APIView): if request.GET.get('myself'):
""" subs = subs.filter(user_id=request.user.id)
用户单个题目的全部提交列表 # todo: paginate
""" return self.success(SubmissionModelSerializer(subs, many=True).data)
def get(self, request):
problem_id = request.GET.get("problem_id")
try:
problem = Problem.objects.get(id=problem_id, visible=True)
except Problem.DoesNotExist:
return self.error("Problem not exist")
submissions = Submission.objects.filter(user_id=request.user.id, problem_id=problem.id,
contest_id__isnull=True). \
order_by("-created_time"). \
values("id", "result", "created_time", "accepted_time", "language")
return self.success({"submissions": submissions, "problem": problem})
class SubmissionListAPI(APIView): class SubmissionListAPI(APIView):
""" """
所有提交的列表 所有提交的列表
""" """
def get(self, request, **kwargs): def get(self, request, **kwargs):
submission_filter = {"my": None, "user_id": None} submission_filter = {"my": None, "user_id": None}
show_all = False show_all = False