This commit is contained in:
rngsurrounded
2025-03-03 23:49:43 +09:00
2 changed files with 35 additions and 1 deletions
+5
View File
@@ -62,3 +62,8 @@ class TaskAttachmentSchema(ModelSchema):
"file", "file",
"public", "public",
) )
class TaskStatusSchema(Schema):
task_name: str
result: int
+30 -1
View File
@@ -1,7 +1,7 @@
from http import HTTPStatus as status from http import HTTPStatus as status
from uuid import UUID from uuid import UUID
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404, get_list_or_404
from ninja import File, Router, UploadedFile from ninja import File, Router, UploadedFile
from api.v1.ping.schemas import PingOut from api.v1.ping.schemas import PingOut
@@ -11,6 +11,7 @@ from api.v1.task.schemas import (
TaskAttachmentSchema, TaskAttachmentSchema,
TaskOutSchema, TaskOutSchema,
TaskSubmissionOut, TaskSubmissionOut,
TaskStatusSchema,
) )
from apps.achievement.models import Achievement, UserAchievement from apps.achievement.models import Achievement, UserAchievement
from apps.competition.models import State from apps.competition.models import State
@@ -175,3 +176,31 @@ def get_submissions_history(request, competition_id: UUID, task_id: UUID):
def get_task_attachments(request, competition_id: UUID, task_id: UUID): def get_task_attachments(request, competition_id: UUID, task_id: UUID):
task = get_object_or_404(CompetitionTask, id=task_id) task = get_object_or_404(CompetitionTask, id=task_id)
return status.OK, CompetitionTaskAttachment.objects.filter(task=task).all() return status.OK, CompetitionTaskAttachment.objects.filter(task=task).all()
@router.get(
"competitions/{competition_id}/results",
response={
status.OK: list[TaskStatusSchema],
status.UNAUTHORIZED: UnauthorizedError
},
)
def get_competition_results(request, competition_id: UUID):
tasks = get_list_or_404(CompetitionTask, competition_id=competition_id)
data = []
for task in tasks:
submissions = CompetitionTaskSubmission.objects.filter(
user=request.auth, task=task
).filter(status="checked").all()
if not submissions:
result = 0
else:
result = submissions[0].earned_points
data.append(TaskStatusSchema(
task_name=task.title,
result=result
))
return status.OK, data