Spaces:
Build error
Build error
| import json | |
| from schemas.quiz_answer import QuizAnswerCreate | |
| from fastapi.encoders import jsonable_encoder | |
| from pydantic.types import ConstrainedStr | |
| from utils.populationdata import ( | |
| users, | |
| schools, | |
| departments, | |
| courses, | |
| programs, | |
| groups, | |
| personalNotes, | |
| teacherNotes, | |
| quizzes, | |
| classSessions, | |
| quizQuestions, | |
| quizAnswers, | |
| assignments, | |
| ) | |
| from utils.utils import send_verification_email | |
| from core.db import redis_session_client | |
| import asyncio | |
| from core.db import SessionLocal | |
| from cruds import ( | |
| crud_personal_note, | |
| crud_user, | |
| crud_course, | |
| crud_school, | |
| crud_department, | |
| crud_teacher_note, | |
| crud_group, | |
| crud_program, | |
| crud_quiz, | |
| crud_class_session, | |
| crud_question, | |
| crud_quiz_answer, | |
| crud_assignment, | |
| ) | |
| from schemas import ( | |
| PersonalNoteCreate, | |
| UserCreate, | |
| CourseCreate, | |
| SchoolCreate, | |
| DepartmentCreate, | |
| TeacherNoteCreate, | |
| GroupCreate, | |
| ProgramCreate, | |
| Program, | |
| ClassSessionCreate, | |
| QuizCreate, | |
| QuizQuestionCreate, | |
| QuizAnswer, | |
| AssignmentCreate, | |
| ) | |
| db = SessionLocal() | |
| created_schools = [] | |
| def eprint(text): | |
| print(f"\033[91m{text}\033[0m") | |
| def populate_school(): | |
| for school in schools: | |
| print(f"Populating school: {school}") | |
| created_school = crud_school.create(db, obj_in=school) | |
| created_schools.append(created_school.id) | |
| created_departments = [] | |
| def populate_department(): | |
| for department in departments: | |
| try: | |
| print(f"Populating department: {department}") | |
| department.update({"school_id": created_schools[department["school_id"]-1]}) | |
| created_department = crud_department.create(db, obj_in=department) | |
| created_departments.append(created_department.id) | |
| except Exception as e: # noqa | |
| eprint(e) | |
| created_courses = [] | |
| def populate_course(): | |
| for course in courses: | |
| try: | |
| print(f"Populating course: {course}") | |
| course.update({"department_id": created_departments[course["department_id"]-1]}) | |
| created_course = crud_course.create(db, obj_in=course) | |
| created_courses.append(created_course.id) | |
| except Exception as e: # noqa | |
| eprint(e) | |
| created_programs = [] | |
| created_groups = [] | |
| def populate_program(): | |
| for program in programs: | |
| try: | |
| print(f"Populating program: {program}") | |
| program.update({"department_id": created_departments[program["department_id"]-1]}) | |
| program_xx = crud_program.create(db, obj_in=Program(**program)) | |
| created_programs.append(program_xx.id) | |
| for sem_iter in range(program.get("max_sems")): | |
| group = GroupCreate( | |
| program_id=program_xx.id, | |
| sem=sem_iter + 1, | |
| ) | |
| created_group = crud_group.create(db=db, obj_in=group) | |
| created_groups.append(created_group.id) | |
| except Exception as e: # noqa | |
| eprint(e) | |
| def populate_group(): | |
| for group in groups: | |
| try: | |
| print(f"Populating group: {group}") | |
| group = GroupCreate( | |
| program_id=group["program_id"], | |
| sem=group["sem"], | |
| course=[created_courses[i-1] for i in group["course"]], | |
| ) | |
| crud_group.update( | |
| db, | |
| db_obj=crud_group.get_by_program_and_sem( | |
| db, program=group.program_id, sem=group.sem | |
| ), | |
| obj_in=group, | |
| ) | |
| except Exception as e: # noqa | |
| eprint(e) | |
| created_users = [] | |
| def populate_user(): | |
| for user in users: | |
| asyncio.run(redis_session_client.initialize()) | |
| try: | |
| print(f"Populating user: {user}") | |
| group_id = created_groups[user["group_id"]-1] if user["group_id"] else None | |
| teacher_department_id=created_departments[user.get("teacher_department_id")-1] if user.get("teacher_department_id") else None | |
| user = UserCreate( | |
| full_name=user["full_name"], | |
| is_active=user["is_active"], | |
| email=user["email"], | |
| roll=user.get("roll"), | |
| teacher_department_id=teacher_department_id, | |
| group_id=group_id, | |
| teacher_group=[[created_groups[i[0]-1], created_courses[i[1]-1]] for i in user["teacher_group"] ], | |
| dob=user["dob"], | |
| address=user["address"], | |
| contact_number=user["contact_number"], | |
| password=user["password"], | |
| user_type=user["user_type"], | |
| join_year=user["join_year"], | |
| ) | |
| user_in = crud_user.create(db, obj_in=user) | |
| created_users.append(user_in.id) | |
| asyncio.run(send_verification_email(user=user_in)) | |
| except Exception as e: # noqa | |
| eprint(e) | |
| pass | |
| def populate_teacher_note(): | |
| for teacherNote in teacherNotes: | |
| try: | |
| print(f"Populating teacher note: {teacherNotes}") | |
| user_id=created_users[teacherNote.get("user_id")-1] if teacherNote.get("user_id") else None | |
| student_id=created_users[teacherNote.get("student_id")-1] if teacherNote.get("student_id") else None | |
| teacherNote = TeacherNoteCreate( | |
| user_id=user_id, | |
| student_id=student_id, | |
| message=teacherNote["message"].strip(), | |
| ) | |
| crud_teacher_note.create(db, obj_in=teacherNote) | |
| except Exception as e: # noqa | |
| eprint(e) | |
| def populate_personal_note(): | |
| for personalNote in personalNotes: | |
| try: | |
| print(f"Populating personal note: {personalNote}") | |
| user_id=created_users[personalNote.get("user_id")-1] if personalNote.get("user_id") else None | |
| personalNote = PersonalNoteCreate( | |
| user_id=user_id, | |
| tags=personalNote["tags"], | |
| title=personalNote["title"].strip(), | |
| content=personalNote["content"], | |
| ) | |
| crud_personal_note.create(db, obj_in=personalNote) | |
| except Exception as e: # noqa | |
| eprint(e) | |
| created_quizzes = [] | |
| def populate_quiz(): | |
| for quiz in quizzes: | |
| try: | |
| print(f"Populating quiz: {quiz}") | |
| quiz = QuizCreate( | |
| end_time=quiz["end_time"], | |
| start_time=quiz["start_time"], | |
| title=quiz["title"], | |
| description=quiz["description"], | |
| is_randomized=quiz["is_randomized"], | |
| display_individual=quiz["display_individual"], | |
| group=[ created_groups[i-1] for i in quiz["group"]], | |
| instructor=[ created_users[i-1] for i in quiz["instructor"] ], | |
| course_id=created_courses[quiz["course_id"]-1], | |
| total_marks=quiz["total_marks"], | |
| ) | |
| created_quiz = crud_quiz.create(db, obj_in=quiz) | |
| created_quizzes.append(created_quiz.id) | |
| except Exception as e: | |
| eprint(e) | |
| def populate_class_session(): | |
| for class_session in classSessions: | |
| try: | |
| print(f"Populating class session: {class_session}") | |
| instructor=[created_users[i-1] for i in class_session["instructor"]] | |
| course_id=created_courses[class_session["course_id"]-1] | |
| group_id=created_groups[class_session["group_id"]-1] | |
| class_session = ClassSessionCreate( | |
| start_time=class_session["start_time"], | |
| is_active=class_session["is_active"], | |
| instructor=instructor, | |
| course_id=course_id, | |
| group_id=group_id, | |
| description=class_session["description"], | |
| end_time=class_session["end_time"], | |
| ) | |
| crud_class_session.create(db, obj_in=class_session) | |
| except Exception as e: | |
| eprint(e) | |
| def populate_quiz_question(): | |
| for quiz_question in quizQuestions: | |
| try: | |
| print(f"Populating quiz question: {quiz_question}") | |
| quiz_question = QuizQuestionCreate( | |
| question_text=quiz_question["question_text"], | |
| question_image=quiz_question["question_image"], | |
| options=quiz_question["options"], | |
| answer=quiz_question["answer"], | |
| quiz_id=created_quizzes[quiz_question["quiz_id"]-1], | |
| marks=quiz_question["marks"], | |
| ) | |
| crud_question.create(db, obj_in=quiz_question) | |
| except Exception as e: | |
| eprint(e) | |
| def populate_quiz_answer(): | |
| for quiz_answer in quizAnswers: | |
| try: | |
| print(f"Populating quiz answer: {quiz_answer}") | |
| quiz_answer = QuizAnswerCreate( | |
| marks_obtained=quiz_answer["marks_obtained"], | |
| options_selected=quiz_answer["options_selected"], | |
| quiz_id=created_quizzes[quiz_answer["quiz_id"]-1], | |
| student_id=created_users[quiz_answer["student_id"]-1], | |
| ) | |
| crud_quiz_answer.create(db, obj_in=quiz_answer) | |
| except Exception as e: | |
| eprint(e) | |
| def populate_assignment(): | |
| for assignment in assignments: | |
| try: | |
| print(f"Populating Assignments: {assignment}") | |
| instructor=[created_users[i-1] for i in assignment["instructor"]] | |
| course_id=created_courses[assignment["course_id"]-1] | |
| group=[created_groups[i-1] for i in assignment["group"]] | |
| assignment = AssignmentCreate( | |
| due_date=assignment["due_date"], | |
| marks=assignment["marks"], | |
| instructor=instructor, | |
| group=group, | |
| course_id=course_id, | |
| title=assignment["title"], | |
| contents=assignment["contents"], | |
| ) | |
| crud_assignment.create(db, obj_in=assignment) | |
| except Exception as e: | |
| eprint(e) | |
| def populate_all(): | |
| populate_school() | |
| populate_department() | |
| populate_course() | |
| populate_program() | |
| populate_group() | |
| populate_user() | |
| populate_personal_note() | |
| populate_teacher_note() | |
| populate_quiz() | |
| populate_class_session() | |
| populate_quiz_question() | |
| populate_quiz_answer() | |
| populate_assignment() |