diff --git a/services/backend/api/v1/task/schemas.py b/services/backend/api/v1/task/schemas.py index 5ee967c..836643d 100644 --- a/services/backend/api/v1/task/schemas.py +++ b/services/backend/api/v1/task/schemas.py @@ -3,7 +3,7 @@ from uuid import UUID from ninja import ModelSchema, Schema -from apps.task.models import CompetitionTask, CompetitionTaskSubmission +from apps.task.models import CompetitionTask, CompetitionTaskSubmission, CompetitionTaskAttachment class TaskOutSchema(ModelSchema): @@ -30,3 +30,9 @@ class HistorySubmissionOut(ModelSchema): class Meta: model = CompetitionTaskSubmission fields = ("id", "earned_points", "timestamp", "content",) + + +class TaskAttachmentSchema(ModelSchema): + class Meta: + model = CompetitionTaskAttachment + fields = ("id", "file", "public",) diff --git a/services/backend/api/v1/task/views.py b/services/backend/api/v1/task/views.py index ebb0064..f918526 100644 --- a/services/backend/api/v1/task/views.py +++ b/services/backend/api/v1/task/views.py @@ -8,6 +8,7 @@ from api.v1.ping.schemas import PingOut from api.v1.schemas import ForbiddenError, NotFoundError, UnauthorizedError from api.v1.task.schemas import ( HistorySubmissionOut, + TaskAttachmentSchema, TaskOutSchema, TaskSubmissionOut, ) @@ -15,6 +16,7 @@ from apps.competition.models import State from apps.task.models import ( Competition, CompetitionTask, + CompetitionTaskAttachment, CompetitionTaskSubmission, ) @@ -141,3 +143,17 @@ def get_submissions_history(request, competition_id: UUID, task_id: UUID): ) 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 + ) diff --git a/services/backend/apps/task/models.py b/services/backend/apps/task/models.py index 3124db9..471197c 100644 --- a/services/backend/apps/task/models.py +++ b/services/backend/apps/task/models.py @@ -5,7 +5,6 @@ from tinymce.models import HTMLField from apps.competition.models import Competition from apps.core.models import BaseModel -from apps.task.validators import ContestTaskCriteriesValidator from apps.user.models import User