microservices/lms/src/schemas/section.py (310 lines of code) (raw):

""" Pydantic Model for copy course API's """ import datetime from typing import Optional from pydantic import BaseModel, constr from schemas.student import UserModel from schemas.schema_examples import CREDENTIAL_JSON, SECTION_EXAMPLE,\ INSERT_SECTION_EXAMPLE,ASSIGNMENT_MODEL,\ STUDENT,SHORT_COURSEWORK_MODEL,COURSE_ENROLLMENT_USER_EXAMPLE class Sections(BaseModel): """Sections Details """ id: str name: str section: str description: str classroom_id: str classroom_code: str classroom_url: str # teachers: list[constr( # min_length=7, # max_length=128, # regex=r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", # to_lower=True)] course_template: str cohort: str status: Optional[str] enrollment_status:Optional[str] enrolled_students_count: int max_students:int class Config(): orm_mode = True schema_extra = {"example": SECTION_EXAMPLE} class TempUsers(BaseModel): "User Details" user_id: str first_name: str last_name: str email: constr(min_length=7, max_length=128, regex=r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", to_lower=True) user_type: str user_groups: Optional[list] status: str is_registered: Optional[bool] = True failed_login_attempts_count: Optional[int] = 0 access_api_docs: Optional[bool] = False gaia_id: Optional[str] = "" photo_url: Optional[str] = "" class SectionDetails(BaseModel): """Course Detail model""" name: str description: str course_template: str cohort: str max_students :int # teachers: list[constr( # min_length=7, # max_length=128, # regex=r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", # to_lower=True)] class Config(): orm_mode = True schema_extra = {"example": INSERT_SECTION_EXAMPLE} class SectionListResponseModel(BaseModel): """Get a list of sections""" success: Optional[bool] = True message: Optional[str] = "Success list" data: Optional[list[Sections]] = [] class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Success", "data": [SECTION_EXAMPLE] } } class TeachersListResponseModel(BaseModel): """Get a list of Teachers""" success: Optional[bool] = True message: Optional[str] = "Success" data: Optional[list[UserModel]] = [] class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Success", "data": [COURSE_ENROLLMENT_USER_EXAMPLE] } } class GetTeacherResponseModel(BaseModel): """Get a Teacher """ success: Optional[bool] = True message: Optional[str] = "Success" data: Optional[UserModel] = None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Success", "data": COURSE_ENROLLMENT_USER_EXAMPLE } } class EnrollTeacherSection(BaseModel): """Enroll Teacher in a section Model""" email: constr(min_length=7, max_length=128, regex=r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", to_lower=True) class Config(): orm_mode = True schema_extra = {"email": "teacher@gmail.com"} class CreateSectiontResponseModel(BaseModel): """Create Section Response Model""" success: Optional[bool] = True message: Optional[str] = "Your section will be created shortly" data: None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Your section will be created shortly", "data": None } } class GetSectiontResponseModel(BaseModel): """Get Section Response Model""" success: Optional[bool] = True message: Optional[str] = "Success" data: Optional[Sections] = None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Success", "data": SECTION_EXAMPLE } } class UpdateSectionResponseModel(BaseModel): """Update Section Response Model""" success: Optional[bool] = True message: Optional[str] = "Success" data: Optional[Sections] = None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Section Updated successfully", "data": SECTION_EXAMPLE } } class SectionResponseModel(BaseModel): """Get a list of sections""" success: Optional[bool] = True message: Optional[str] = "Success list" data: Optional[list[Sections]] = None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Successfully send the list of course ", "data": [] } } class CredentialKeys(BaseModel): """Credential model""" token: str refresh_token: str token_uri: str client_id: str client_secret: str scopes: list[str] expiry: str class Config(): orm_mode = True schema_extra = {"example": CREDENTIAL_JSON} class DeleteSectionResponseModel(BaseModel): """Delete section Model""" success: Optional[bool] = True message: Optional[str] = "Successfully deleted the section" data: Optional[str] = None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Successfully deleted the section", "data": None } } class DeleteTeacherFromSectionResponseModel(BaseModel): """Delete Teacher from section Model""" success: Optional[bool] = True message: Optional[str] = "Successfully deleted the student from section" data: Optional[str] = None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Successfully deleted teacher from section", "data": None } } class DeleteStudentFromSectionResponseModel(BaseModel): """Delete student from section Model""" success: Optional[bool] = True message: Optional[str] = "Successfully deleted the student from course" data: Optional[str] = None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Successfully deleted the section", "data": None } } class StudentListResponseModel(BaseModel): """list student for section response Model""" success: Optional[bool] = True message: Optional[str] = "Success" data: Optional[list[UserModel]] = [] class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Success", "data": [STUDENT] } } class AssignmentModel(BaseModel): """Assignment Details Model""" id: str classroom_id: str title: Optional[str] = None description: Optional[str] = None link: Optional[str] = None state: Optional[str] = None creation_time: str update_time: str due_date: Optional[datetime.date] = None due_time: Optional[datetime.time] = None max_grade: Optional[int] = None work_type: Optional[str] = None assignee_mode: Optional[str] = None class Config(): orm_mode = True schema_extra = {"example": ASSIGNMENT_MODEL} class GetCourseWorkList(BaseModel): """Coursework list model""" success: Optional[bool] = True message: Optional[str] = "Success" data: Optional[list] = [] class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Success", "data": [SHORT_COURSEWORK_MODEL] } } class ImportGradeResponseModel(BaseModel): """Import grade esponseModel Details Model""" success: Optional[bool] = True message: Optional[str] = "Success" data: Optional[dict] = None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Success", "data": None } } class UpdateEnrollmentStatusSectionModel(BaseModel): """Update Section Response Model""" success: Optional[bool] = True message: Optional[str] = "Success" data: Optional[Sections] = None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Success", "data": SECTION_EXAMPLE } } class DeleteFailedSectionSectionModel(BaseModel): """Update Section Response Model""" success: Optional[bool] = True message: Optional[str] = "Success" data: Optional[int] = 0 class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Success", "data": 2 } } class UpdateInviteResponseModel(BaseModel): """Invite Student Model""" success: Optional[bool] = True message: Optional[str] = "Successfully Updated the invitation status" data: Optional[dict] = None class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Successfully Invited the Student", "data": { "list_coursenrolment": [ "courseenrollment_id1", "courseenrollment_id2", "courseenrollment_id3" ] } } } class NullGradesResponseModel(BaseModel): """Import grade esponseModel Details Model""" success: Optional[bool] = True message: Optional[str] = "Success" class Config(): orm_mode = True schema_extra = { "example": { "success": True, "message": "Success" } }