feat: Add authentic JEE/NEET mock tests and fix CBT frontend filtering
This commit is contained in:
82
modify.py
Normal file
82
modify.py
Normal file
@@ -0,0 +1,82 @@
|
||||
import os
|
||||
|
||||
with open('backend/seed.py', 'r', encoding='utf-8') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
new_lines = []
|
||||
skip = False
|
||||
for i, line in enumerate(lines):
|
||||
if 'jee_test_id = UUID' in line:
|
||||
skip = True
|
||||
new_lines.append(line)
|
||||
new_lines.append(lines[i+1]) # neet_test_id
|
||||
|
||||
replacement = """
|
||||
# --- MOCK TESTS from admin_uploads JSON files ---
|
||||
print("Seeding Mock tests from admin_uploads...")
|
||||
_script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
_docker_path = os.path.join(_script_dir, "admin_uploads")
|
||||
_local_path = os.path.join(_script_dir, "..", "admin_uploads")
|
||||
mock_json_dir = _docker_path if os.path.isdir(_docker_path) else _local_path
|
||||
|
||||
mock_json_files = sorted(glob.glob(os.path.join(mock_json_dir, "mock_*.json")))
|
||||
|
||||
for json_path in mock_json_files:
|
||||
with open(json_path, "r", encoding="utf-8") as f:
|
||||
raw_questions = json.load(f)
|
||||
|
||||
is_neet = "neet" in json_path.lower()
|
||||
pattern = models.ExamEnum.NEET if is_neet else models.ExamEnum.JEE_MAIN
|
||||
title = "NEET UG Full Mock Test (2025)" if is_neet else "JEE Advanced Paper 1 (2025)"
|
||||
|
||||
sections = {}
|
||||
for raw_q in raw_questions:
|
||||
subject = raw_q.get("subject", "General")
|
||||
if subject not in sections:
|
||||
sections[subject] = {"name": subject, "questions": [], "time_limit": 45 if is_neet else 60}
|
||||
|
||||
q = models.Question(
|
||||
id=uuid4(),
|
||||
subject=subject,
|
||||
topic=raw_q.get("topic", "Mixed"),
|
||||
subtopic=raw_q.get("subtopic", "Mixed"),
|
||||
difficulty=raw_q.get("difficulty", "Medium"),
|
||||
type=models.QuestionTypeEnum(raw_q.get("type", "MCQ_Single")),
|
||||
question_text=raw_q.get("question_text", ""),
|
||||
options=raw_q.get("options"),
|
||||
correct_answer=raw_q.get("correct_answer"),
|
||||
solution_text=raw_q.get("solution_text", ""),
|
||||
language=models.MediumEnum.ENGLISH,
|
||||
exam=pattern,
|
||||
created_by=admin_id
|
||||
)
|
||||
session.add(q)
|
||||
sections[subject]["questions"].append(str(q.id))
|
||||
|
||||
mock_test = models.Test(
|
||||
id=neet_test_id if is_neet else jee_test_id,
|
||||
title=title,
|
||||
type="Mock",
|
||||
exam_pattern=pattern,
|
||||
sections=sections,
|
||||
total_time=180,
|
||||
difficulty="Mixed",
|
||||
scheduled_date=datetime.utcnow(),
|
||||
is_active=True,
|
||||
created_by=admin_id
|
||||
)
|
||||
session.add(mock_test)
|
||||
|
||||
session.commit()
|
||||
|
||||
"""
|
||||
new_lines.append(replacement)
|
||||
|
||||
elif '--- DPS (Daily Practice Sheets)' in line:
|
||||
skip = False
|
||||
|
||||
if not skip:
|
||||
new_lines.append(line)
|
||||
|
||||
with open('backend/seed.py', 'w', encoding='utf-8') as f:
|
||||
f.writelines(new_lines)
|
||||
Reference in New Issue
Block a user