add endpoint for get task attachments

This commit is contained in:
Timur
2025-03-02 12:29:15 +03:00
parent 16372bb35d
commit 9a0122ab1c
3 changed files with 23 additions and 2 deletions
+7 -1
View File
@@ -3,7 +3,7 @@ from uuid import UUID
from ninja import ModelSchema, Schema from ninja import ModelSchema, Schema
from apps.task.models import CompetitionTask, CompetitionTaskSubmission from apps.task.models import CompetitionTask, CompetitionTaskSubmission, CompetitionTaskAttachment
class TaskOutSchema(ModelSchema): class TaskOutSchema(ModelSchema):
@@ -30,3 +30,9 @@ class HistorySubmissionOut(ModelSchema):
class Meta: class Meta:
model = CompetitionTaskSubmission model = CompetitionTaskSubmission
fields = ("id", "earned_points", "timestamp", "content",) fields = ("id", "earned_points", "timestamp", "content",)
class TaskAttachmentSchema(ModelSchema):
class Meta:
model = CompetitionTaskAttachment
fields = ("id", "file", "public",)
+16
View File
@@ -8,6 +8,7 @@ from api.v1.ping.schemas import PingOut
from api.v1.schemas import ForbiddenError, NotFoundError, UnauthorizedError from api.v1.schemas import ForbiddenError, NotFoundError, UnauthorizedError
from api.v1.task.schemas import ( from api.v1.task.schemas import (
HistorySubmissionOut, HistorySubmissionOut,
TaskAttachmentSchema,
TaskOutSchema, TaskOutSchema,
TaskSubmissionOut, TaskSubmissionOut,
) )
@@ -15,6 +16,7 @@ from apps.competition.models import State
from apps.task.models import ( from apps.task.models import (
Competition, Competition,
CompetitionTask, CompetitionTask,
CompetitionTaskAttachment,
CompetitionTaskSubmission, CompetitionTaskSubmission,
) )
@@ -141,3 +143,17 @@ def get_submissions_history(request, competition_id: UUID, task_id: UUID):
) )
return status.OK, submissions_history return status.OK, submissions_history
@router.get(
"competitions/{competition_id}/tasks/{task_id}/attachments",
response={
status.OK: list[TaskAttachmentSchema],
status.UNAUTHORIZED: UnauthorizedError,
},
)
def get_task_attachments(request, competition_id: UUID, task_id: UUID):
task = get_object_or_404(CompetitionTask, id=task_id)
return status.OK, CompetitionTaskAttachment.objects.filter(
competition_id=competition_id, task=task, user=request.auth
)
-1
View File
@@ -5,7 +5,6 @@ from tinymce.models import HTMLField
from apps.competition.models import Competition from apps.competition.models import Competition
from apps.core.models import BaseModel from apps.core.models import BaseModel
from apps.task.validators import ContestTaskCriteriesValidator
from apps.user.models import User from apps.user.models import User