Spaces:
Sleeping
Sleeping
| from typing import Optional | |
| from utils.enums.grade import Grade | |
| import uuid | |
| from .student import Student | |
| from sqlmodel import SQLModel, Field, Relationship | |
| class Enrollment(SQLModel, table=True): | |
| """ | |
| Represents an Enrollment, including the student, the course they are enrolled in, and the assigned grade. | |
| Attributes: | |
| id: (int): The enrollment ID | |
| student_id (str): The ID of the student who is enrolled in the course. | |
| course_id (str): The ID of the course in which the student is enrolled. | |
| grade (str): The grade assigned to the student for the course. Default if NO_GRADE with enum value of None if no grade has been assigned yet. | |
| """ | |
| id: str = Field( | |
| default_factory=lambda: str(uuid.uuid4()), | |
| primary_key=True, | |
| index=True, | |
| nullable=False, | |
| sa_column_kwargs={"unique": True} | |
| ) | |
| student_id: str = Field(foreign_key="student.id") | |
| course_id: str = Field(foreign_key="course.id") | |
| grade: str = Field(default=None) | |
| course: "Course" = Relationship( | |
| back_populates="enrollments") | |
| def assign_grade(self, grade: str) -> None: | |
| """ | |
| Assigns a grade to the student for the course. | |
| Args: | |
| grade (str): The grade to assign to the student. | |
| """ | |
| self.grade = grade | |
| def __str__(self) -> str: | |
| """ | |
| Returns a string representation of the Enrollment. | |
| Returns: | |
| str: A description of the enrollment including the student id_number, course_id, and grade. | |
| """ | |
| return f"Enrollment(student id: {self.student_id}, course: {self.course_id}, grade: {self.grade})" | |