add endpoint for flowchart's detail
This commit is contained in:
@@ -3,12 +3,14 @@ from ..views.oj import (
|
|||||||
FlowchartSubmissionAPI,
|
FlowchartSubmissionAPI,
|
||||||
FlowchartSubmissionListAPI,
|
FlowchartSubmissionListAPI,
|
||||||
FlowchartSubmissionRetryAPI,
|
FlowchartSubmissionRetryAPI,
|
||||||
FlowchartSubmissionCurrentAPI
|
FlowchartSubmissionCurrentAPI,
|
||||||
|
FlowchartSubmissionDetailAPI,
|
||||||
)
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('flowchart/submission', FlowchartSubmissionAPI.as_view()),
|
path('flowchart/submission', FlowchartSubmissionAPI.as_view()),
|
||||||
path('flowchart/submissions', FlowchartSubmissionListAPI.as_view()),
|
path('flowchart/submissions', FlowchartSubmissionListAPI.as_view()),
|
||||||
path('flowchart/submission/retry', FlowchartSubmissionRetryAPI.as_view()),
|
path('flowchart/submission/retry', FlowchartSubmissionRetryAPI.as_view()),
|
||||||
|
path('flowchart/submission/detail', FlowchartSubmissionDetailAPI.as_view()),
|
||||||
path('flowchart/submission/current', FlowchartSubmissionCurrentAPI.as_view()),
|
path('flowchart/submission/current', FlowchartSubmissionCurrentAPI.as_view()),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -140,10 +140,10 @@ class FlowchartSubmissionRetryAPI(APIView):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class FlowchartSubmissionCurrentAPI(APIView):
|
class FlowchartSubmissionDetailAPI(APIView):
|
||||||
@login_required
|
@login_required
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
"""获取当前用户对指定题目的最新流程图提交"""
|
"""获取当前用户对指定题目的流程图提交详情"""
|
||||||
problem_id = request.GET.get("problem_id")
|
problem_id = request.GET.get("problem_id")
|
||||||
if not problem_id:
|
if not problem_id:
|
||||||
return self.error("problem_id is required")
|
return self.error("problem_id is required")
|
||||||
@@ -152,12 +152,48 @@ class FlowchartSubmissionCurrentAPI(APIView):
|
|||||||
except Problem.DoesNotExist:
|
except Problem.DoesNotExist:
|
||||||
return self.error("Problem doesn't exist")
|
return self.error("Problem doesn't exist")
|
||||||
|
|
||||||
|
page = int(request.GET.get("page", 0))
|
||||||
submissions = FlowchartSubmission.objects.filter(
|
submissions = FlowchartSubmission.objects.filter(
|
||||||
user=request.user, problem=problem
|
user=request.user,
|
||||||
|
problem=problem,
|
||||||
|
status=FlowchartSubmissionStatus.COMPLETED,
|
||||||
).order_by("-create_time")
|
).order_by("-create_time")
|
||||||
|
if page > 0:
|
||||||
|
submission = submissions[page - 1]
|
||||||
|
else:
|
||||||
|
submission = submissions[0]
|
||||||
|
serializer = FlowchartSubmissionSerializer(submission)
|
||||||
|
return self.success({"submission": serializer.data})
|
||||||
|
|
||||||
|
|
||||||
|
class FlowchartSubmissionCurrentAPI(APIView):
|
||||||
|
@login_required
|
||||||
|
def get(self, request):
|
||||||
|
"""获取当前用户对指定题目的最新流程图提交,只返回次数和分数"""
|
||||||
|
problem_id = request.GET.get("problem_id")
|
||||||
|
if not problem_id:
|
||||||
|
return self.error("problem_id is required")
|
||||||
|
try:
|
||||||
|
problem = Problem.objects.get(id=problem_id)
|
||||||
|
except Problem.DoesNotExist:
|
||||||
|
return self.error("Problem doesn't exist")
|
||||||
|
submissions = (
|
||||||
|
FlowchartSubmission.objects.filter(
|
||||||
|
user=request.user,
|
||||||
|
problem=problem,
|
||||||
|
status=FlowchartSubmissionStatus.COMPLETED,
|
||||||
|
)
|
||||||
|
.values("ai_score", "ai_grade")
|
||||||
|
.order_by("-create_time")
|
||||||
|
)
|
||||||
count = submissions.count()
|
count = submissions.count()
|
||||||
if count == 0:
|
if count == 0:
|
||||||
return self.success({"submission": None, "count": 0})
|
return self.success({"count": 0, "score": 0, "grade": ""})
|
||||||
first_submission = submissions[0]
|
submission = submissions[0]
|
||||||
serializer = FlowchartSubmissionSerializer(first_submission)
|
return self.success(
|
||||||
return self.success({"submission": serializer.data, "count": count})
|
{
|
||||||
|
"count": count,
|
||||||
|
"score": submission["ai_score"],
|
||||||
|
"grade": submission["ai_grade"],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user