Files
DataRush/services/backend/api/v1/task/schemas.py
T
Андрей Сумин 4d07439f27 feat: added status in tasks
2025-03-02 16:28:16 +03:00

48 lines
1.3 KiB
Python

from typing import Literal
from uuid import UUID
from ninja import ModelSchema, Schema
from pydantic import Field
from apps.task.models import CompetitionTask, CompetitionTaskSubmission, CompetitionTaskAttachment
class TaskOutSchema(ModelSchema):
status: Literal["sent", "checked", "checking", "not_submitted"] = None
@staticmethod
def resolve_status(self, context) -> Literal["sent", "checked", "checking", "not_submitted"]:
if submission := CompetitionTaskSubmission.objects.filter(task=self, user=context.get("request").auth).first():
return submission.status
return "not_submitted"
class Meta:
model = CompetitionTask
fields = [
"id",
"competition",
"title",
"description",
"type",
"in_competition_position",
"points",
]
class TaskSubmissionOut(Schema):
submission_id: UUID
class HistorySubmissionOut(ModelSchema):
status: Literal["sent", "checked", "checking"]
class Meta:
model = CompetitionTaskSubmission
fields = ("id", "earned_points", "timestamp", "content",)
class TaskAttachmentSchema(ModelSchema):
class Meta:
model = CompetitionTaskAttachment
fields = ("id", "file", "public",)