63 lines
1.3 KiB
Python
63 lines
1.3 KiB
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class AssignmentCreate(BaseModel):
|
|
title: str
|
|
description: str | None = None
|
|
deadline: datetime | None = None
|
|
|
|
|
|
class AssignmentUpdate(BaseModel):
|
|
title: str | None = None
|
|
description: str | None = None
|
|
deadline: datetime | None = None
|
|
status: str | None = None # open | closed
|
|
|
|
|
|
class SubmissionCreate(BaseModel):
|
|
notes: str | None = None
|
|
|
|
|
|
class SubmissionGrade(BaseModel):
|
|
grade: str
|
|
feedback: str | None = None
|
|
|
|
|
|
class SubmissionOut(BaseModel):
|
|
id: int
|
|
assignment_id: int
|
|
student_id: int
|
|
student_name: str
|
|
notes: str | None
|
|
file_url: str | None
|
|
file_name: str | None
|
|
file_type: str | None
|
|
file_size: int | None
|
|
grade: str | None
|
|
feedback: str | None
|
|
graded_at: datetime | None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class AssignmentOut(BaseModel):
|
|
id: int
|
|
class_id: int
|
|
creator_id: int
|
|
creator_name: str
|
|
title: str
|
|
description: str | None
|
|
deadline: datetime | None
|
|
attachment_urls: list[str] | None
|
|
status: str
|
|
submission_count: int
|
|
my_submitted: bool
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class AssignmentDetailOut(AssignmentOut):
|
|
submissions: list[SubmissionOut] | None = None
|