feat: wire SMTP email service, production CORS domains, Razorpay ENV, MinIO env-vars, and DPS seed from admin_uploads

This commit is contained in:
2026-09-09 09:48:00 +05:30
parent 5951ab5b3f
commit 63c8067216
3 changed files with 227 additions and 11 deletions

View File

@@ -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()