mirror of
https://gitlab.com/megazordpobeda/DataRush.git
synced 2026-05-23 01:37:11 +00:00
48 lines
1.3 KiB
Python
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",)
|