feat: add assignment submission from the activity page

This commit is contained in:
swve 2024-07-20 20:10:43 +02:00
parent c13a7b4538
commit e9caa2ceb4
7 changed files with 207 additions and 29 deletions

View file

@ -4,7 +4,6 @@ from sqlmodel import Field, SQLModel
from enum import Enum
## Assignment ##
class GradingTypeEnum(str, Enum):
ALPHABET = "ALPHABET"
@ -87,7 +86,7 @@ class Assignment(AssignmentBase, table=True):
class AssignmentTaskTypeEnum(str, Enum):
FILE_SUBMISSION = "FILE_SUBMISSION"
QUIZ = "QUIZ"
FORM = "FORM" # soon to be implemented
FORM = "FORM" # soon to be implemented
OTHER = "OTHER"
@ -102,8 +101,6 @@ class AssignmentTaskBase(SQLModel):
contents: Dict = Field(default={}, sa_column=Column(JSON))
max_grade_value: int = 0 # Value is always between 0-100
class AssignmentTaskCreate(AssignmentTaskBase):
"""Model for creating a new assignment task."""
@ -194,6 +191,7 @@ class AssignmentTaskSubmissionRead(AssignmentTaskSubmissionBase):
class AssignmentTaskSubmissionUpdate(SQLModel):
"""Model for updating an assignment task submission."""
assignment_task_id: Optional[int]
assignment_task_submission_uuid: Optional[str]
task_submission: Optional[Dict] = Field(default=None, sa_column=Column(JSON))
@ -233,10 +231,12 @@ class AssignmentTaskSubmission(AssignmentTaskSubmissionBase, table=True):
creation_date: str
update_date: str
## AssignmentTaskSubmission ##
## AssignmentUserSubmission ##
class AssignmentUserSubmissionStatus(str, Enum):
PENDING = "PENDING"
SUBMITTED = "SUBMITTED"
@ -248,11 +248,10 @@ class AssignmentUserSubmissionStatus(str, Enum):
class AssignmentUserSubmissionBase(SQLModel):
"""Represents the submission status of an assignment for a user."""
submission_status: AssignmentUserSubmissionStatus = (
AssignmentUserSubmissionStatus.PENDING
)
grade: str
grade: int
user_id: int = Field(
sa_column=Column("user_id", ForeignKey("user.id", ondelete="CASCADE"))
)
@ -262,11 +261,14 @@ class AssignmentUserSubmissionBase(SQLModel):
)
)
class AssignmentUserSubmissionCreate(AssignmentUserSubmissionBase):
class AssignmentUserSubmissionCreate(SQLModel):
"""Model for creating a new assignment user submission."""
assignment_id: int
pass # Inherits all fields from AssignmentUserSubmissionBase
class AssignmentUserSubmissionRead(AssignmentUserSubmissionBase):
"""Model for reading an assignment user submission."""
@ -274,6 +276,7 @@ class AssignmentUserSubmissionRead(AssignmentUserSubmissionBase):
creation_date: str
update_date: str
class AssignmentUserSubmissionUpdate(SQLModel):
"""Model for updating an assignment user submission."""
@ -282,17 +285,19 @@ class AssignmentUserSubmissionUpdate(SQLModel):
user_id: Optional[int]
assignment_id: Optional[int]
class AssignmentUserSubmission(AssignmentUserSubmissionBase, table=True):
"""Represents the submission status of an assignment for a user."""
id: Optional[int] = Field(default=None, primary_key=True)
creation_date: str
update_date: str
assignmentusersubmission_uuid: str
submission_status: AssignmentUserSubmissionStatus = (
AssignmentUserSubmissionStatus.PENDING
)
grade: str
grade: int
user_id: int = Field(
sa_column=Column("user_id", ForeignKey("user.id", ondelete="CASCADE"))
)
@ -301,4 +306,3 @@ class AssignmentUserSubmission(AssignmentUserSubmissionBase, table=True):
"assignment_id", ForeignKey("assignment.id", ondelete="CASCADE")
)
)