添加提交

This commit is contained in:
2025-03-18 19:16:32 +08:00
parent f84f34cc46
commit 55ef262ae8
13 changed files with 304 additions and 44 deletions

71
submission/schemas.py Normal file
View File

@@ -0,0 +1,71 @@
from typing import Optional, Literal
from ninja import Schema
from uuid import UUID
class SubmissionIn(Schema):
task_id: int
html: Optional[str] = None
css: Optional[str] = None
js: Optional[str] = None
class SubmissionOut(Schema):
id: UUID
userid: int
username: str
task_id: int
task_title: str
task_type: Literal["tutorial", "challenge"]
score: int
html: Optional[str] = None
css: Optional[str] = None
js: Optional[str] = None
created: str
modified: str
@staticmethod
def list(submission):
return {
"id": submission.id,
"userid": submission.user.id,
"username": submission.user.username,
"task_id": submission.task.id,
"task_title": submission.task.title,
"task_type": submission.task.task_type,
"score": submission.score,
"created": submission.created.isoformat(),
"modified": submission.modified.isoformat(),
}
@staticmethod
def get(submission):
return {
"id": submission.id,
"userid": submission.user.id,
"username": submission.user.username,
"task_id": submission.task.id,
"task_title": submission.task.title,
"task_type": submission.task.task_type,
"score": submission.score,
"html": submission.html,
"css": submission.css,
"js": submission.js,
"created": submission.created.isoformat(),
"modified": submission.modified.isoformat(),
}
class SubmissionScoreIn(Schema):
score: int
class SubmissionScoreOut(Schema):
id: UUID
score: int
class SubmissionFilter(Schema):
task_id: Optional[int] = None
task_type: Optional[Literal["tutorial", "challenge"]] = None
username: Optional[str] = None