chore: add mock seeding script for dpps

This commit is contained in:
2026-07-27 15:06:04 +05:30
parent a5bb2d867c
commit d79671ee73

83
backend/seed_dpps_mock.py Normal file
View File

@@ -0,0 +1,83 @@
import asyncio
import os
import uuid
import random
from sqlmodel import Session, select, delete
from datetime import datetime
from database import engine
import models
def seed_tests():
admin_id_str = "b0e17378-864d-439e-8806-708dc48a891b"
with Session(engine) as session:
admin = session.exec(select(models.User).limit(1)).first()
admin_id = admin.id if admin else uuid.UUID(admin_id_str)
# Clear existing DPS tests
statement = select(models.Test).where(models.Test.type == "DPS")
old_tests = session.exec(statement).all()
for t in old_tests:
session.delete(t)
session.commit()
subjects = [
("Physics", "Laws of Motion", "dps-phy-ch4-20260707.pdf"),
("Chemistry", "Chemical Thermodynamics", "dps-che-ch4-20260707.pdf"),
("Mathematics", "Calculus", "dps-mth-ch4-20260707.pdf"),
("Biology", "Genetics", "dps-bio-ch4-20260707.pdf")
]
for exam in [models.ExamEnum.JEE_MAIN, models.ExamEnum.JEE_ADVANCED, models.ExamEnum.NEET]:
for subject, topic, pdf in subjects:
# Math for NEET? Biology for JEE? Let's just create them anyway so the UI is populated
question_ids = []
for i in range(1, 16):
new_q = models.Question(
subject=subject,
topic=topic,
subtopic="General",
difficulty="Medium",
type=models.QuestionTypeEnum.MCQ_SINGLE,
question_text=f"Sample mock question {i} for {subject} - {topic}",
options={
"A": "Option A",
"B": "Option B",
"C": "Option C",
"D": "Option D"
},
correct_answer={"value": "A"},
solution_text="Solution provided here.",
language=models.MediumEnum.ENGLISH,
exam=exam,
created_by=admin_id
)
session.add(new_q)
session.flush()
question_ids.append(str(new_q.id))
test_obj = models.Test(
title=f"{subject} Chapter 4 DPS ({exam})",
type="DPS",
exam_pattern=exam,
sections={
"Section 1": {
"questions": question_ids,
"time_limit": 30
}
},
total_time=30,
difficulty="Medium",
scheduled_date=datetime.utcnow(),
is_active=True,
created_by=admin_id
)
session.add(test_obj)
print(f"Created Test: {test_obj.title}")
session.commit()
print("Database seeded with mock CBT DPPs for all exams.")
if __name__ == "__main__":
seed_tests()