65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
import sys
|
|
sys.path.append('.')
|
|
from sqlmodel import Session, select
|
|
from database import engine
|
|
from models import User, Test, Question, QuestionTypeEnum, ExamEnum
|
|
|
|
def upload_json():
|
|
import json
|
|
|
|
with open('neet_180_questions.json', 'r', encoding='utf-8') as f:
|
|
questions = json.load(f)
|
|
|
|
with Session(engine) as session:
|
|
admin = session.exec(select(User).where(User.tier == 'AI Coach')).first()
|
|
if not admin:
|
|
print('No admin found')
|
|
return
|
|
|
|
payload = {
|
|
'title': 'Test NEET Mock Upload',
|
|
'type': 'Mock',
|
|
'exam_pattern': 'NEET',
|
|
'time_limit': 180,
|
|
'admin_id': str(admin.id),
|
|
'questions_json': questions
|
|
}
|
|
|
|
test_obj = Test(
|
|
title=payload['title'],
|
|
type=payload['type'],
|
|
exam_pattern=ExamEnum.NEET,
|
|
sections={},
|
|
total_time=payload['time_limit'],
|
|
difficulty='Hard',
|
|
is_active=True,
|
|
created_by=admin.id
|
|
)
|
|
session.add(test_obj)
|
|
session.flush()
|
|
|
|
for q in questions:
|
|
q_obj = Question(
|
|
subject=q.get('subject'),
|
|
topic=q.get('topic', 'General'),
|
|
subtopic=q.get('subtopic', ''),
|
|
difficulty=q.get('difficulty', 'Medium'),
|
|
type=QuestionTypeEnum(q.get('type', 'SCQ')),
|
|
question_text=q.get('question_text', ''),
|
|
options_json=q.get('options', []),
|
|
correct_answer=q.get('correct_answer', ''),
|
|
solution_text=q.get('explanation', ''), language='English',
|
|
test_id=test_obj.id, created_by=admin.id,
|
|
section_name=q.get('subject')
|
|
)
|
|
session.add(q_obj)
|
|
|
|
session.commit()
|
|
print('Successfully added test with ID:', test_obj.id)
|
|
|
|
upload_json()
|
|
|
|
|
|
|
|
|