feat: wire SMTP email service, production CORS domains, Razorpay ENV, MinIO env-vars, and DPS seed from admin_uploads
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
from sqlmodel import Session, create_engine, select
|
||||
from uuid import uuid4, UUID
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta, date
|
||||
import os
|
||||
import json
|
||||
import glob
|
||||
|
||||
from database import engine, init_db
|
||||
import models
|
||||
@@ -365,10 +367,62 @@ def seed_local_database():
|
||||
session.add(neet_test)
|
||||
|
||||
session.commit()
|
||||
|
||||
|
||||
# --- DPS (Daily Practice Sheets) from admin_uploads JSON files ---
|
||||
print("Seeding DPS tests from admin_uploads...")
|
||||
dps_json_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), "admin_uploads")
|
||||
dps_json_files = sorted(glob.glob(os.path.join(dps_json_dir, "dps_*.json")))
|
||||
|
||||
with Session(engine) as dps_session:
|
||||
for i, json_path in enumerate(dps_json_files):
|
||||
with open(json_path, "r", encoding="utf-8") as f:
|
||||
raw_questions = json.load(f)
|
||||
|
||||
subject = raw_questions[0].get("subject", "General") if raw_questions else "General"
|
||||
topic = raw_questions[0].get("topic", "Chapter 4") if raw_questions else "Chapter 4"
|
||||
sheet_title = f"{subject} — {topic} DPS"
|
||||
sheet_date = date.today() - timedelta(days=i)
|
||||
|
||||
# Create Question records from the JSON
|
||||
q_ids = []
|
||||
for raw_q in raw_questions:
|
||||
q = models.Question(
|
||||
id=uuid4(),
|
||||
subject=raw_q.get("subject", subject),
|
||||
topic=raw_q.get("topic", topic),
|
||||
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", "Sample question"),
|
||||
options=raw_q.get("options"),
|
||||
correct_answer=raw_q.get("correct_answer", {"value": "A"}),
|
||||
solution_text=raw_q.get("solution_text", "Refer to standard solution."),
|
||||
language=models.MediumEnum.ENGLISH,
|
||||
exam=models.ExamEnum.JEE_MAIN,
|
||||
created_by=admin_id,
|
||||
)
|
||||
dps_session.add(q)
|
||||
q_ids.append(str(q.id))
|
||||
|
||||
dps = models.DPS(
|
||||
id=uuid4(),
|
||||
date=sheet_date,
|
||||
title=sheet_title,
|
||||
questions=q_ids,
|
||||
difficulty="Medium",
|
||||
time_limit=30,
|
||||
is_active=True,
|
||||
created_by=admin_id,
|
||||
)
|
||||
dps_session.add(dps)
|
||||
print(f" ✓ DPS seeded: {sheet_title} ({len(q_ids)} questions)")
|
||||
|
||||
dps_session.commit()
|
||||
|
||||
print("\n=== LOCAL SEED COMPLETED SUCCESSFULLY ===")
|
||||
print(f"JEE Test ID: {jee_test.id}")
|
||||
print(f"NEET Test ID: {neet_test.id}\n")
|
||||
print(f"NEET Test ID: {neet_test.id}")
|
||||
print(f"DPS Sheets: {len(dps_json_files)} seeded from admin_uploads/\n")
|
||||
|
||||
if __name__ == "__main__":
|
||||
seed_local_database()
|
||||
|
||||
Reference in New Issue
Block a user