feat: admin date-time calendar controller, dpp ui cleanup, 4-subject jee+neet tracker, calendar filter, and clean new account state
This commit is contained in:
@@ -899,8 +899,8 @@ DEMO_DEFINITIONS = {
|
||||
"state": "Bihar",
|
||||
"school": "Loyola High School",
|
||||
"tier": models.TierEnum.FREE,
|
||||
"streak_count": 1,
|
||||
"longest_streak": 1,
|
||||
"streak_count": 0,
|
||||
"longest_streak": 0,
|
||||
# trial_end is intentionally omitted here — it is set dynamically at creation time
|
||||
},
|
||||
}
|
||||
@@ -1110,7 +1110,6 @@ DEMO_USER_UUIDS = {
|
||||
"11111111-1111-1111-1111-111111111111", # Aarav (AI Coach - JEE)
|
||||
"22222222-2222-2222-2222-222222222222", # Neha (AI Coach - NEET)
|
||||
"33333333-3333-3333-3333-333333333333", # Rohan (AI Coach - JEE+NEET)
|
||||
"44444444-4444-4444-4444-444444444444", # Amit (Free - JEE)
|
||||
}
|
||||
|
||||
@app.get("/api/users/{user_id}/stats", tags=["Users"])
|
||||
@@ -1343,6 +1342,7 @@ async def upload_admin_test(
|
||||
exam_pattern: str = Form(...),
|
||||
time_limit: int = Form(...),
|
||||
scheduled_date: Optional[datetime] = Form(None),
|
||||
end_date: Optional[datetime] = Form(None),
|
||||
admin_id: Optional[UUID] = Form(None),
|
||||
session: Session = Depends(get_session),
|
||||
current_user: models.User = Depends(get_current_user),
|
||||
@@ -1388,6 +1388,7 @@ async def upload_admin_test(
|
||||
total_time=time_limit,
|
||||
difficulty="Medium",
|
||||
scheduled_date=scheduled_date,
|
||||
end_date=end_date,
|
||||
is_active=True,
|
||||
created_by=effective_admin_id,
|
||||
pdf_url=url
|
||||
@@ -1534,6 +1535,42 @@ def toggle_test_status(test_id: UUID, session: Session = Depends(get_session), c
|
||||
|
||||
return {"status": "success", "is_active": test_obj.is_active}
|
||||
|
||||
class UpdateTestScheduleInput(BaseModel):
|
||||
scheduled_date: Optional[datetime] = None
|
||||
end_date: Optional[datetime] = None
|
||||
title: Optional[str] = None
|
||||
is_active: Optional[bool] = None
|
||||
|
||||
@app.put("/api/admin/tests/{test_id}/schedule", tags=["Admin"])
|
||||
def update_test_schedule(
|
||||
test_id: UUID,
|
||||
data: UpdateTestScheduleInput,
|
||||
session: Session = Depends(get_session),
|
||||
current_user: models.User = Depends(get_current_user)
|
||||
):
|
||||
test_obj = session.get(models.Test, test_id)
|
||||
if not test_obj:
|
||||
raise HTTPException(status_code=404, detail="Test not found")
|
||||
|
||||
test_obj.scheduled_date = data.scheduled_date
|
||||
test_obj.end_date = data.end_date
|
||||
if data.title is not None:
|
||||
test_obj.title = data.title
|
||||
if data.is_active is not None:
|
||||
test_obj.is_active = data.is_active
|
||||
session.add(test_obj)
|
||||
session.commit()
|
||||
session.refresh(test_obj)
|
||||
|
||||
return {
|
||||
"status": "success",
|
||||
"test_id": test_obj.id,
|
||||
"title": test_obj.title,
|
||||
"scheduled_date": test_obj.scheduled_date,
|
||||
"end_date": test_obj.end_date,
|
||||
"is_active": test_obj.is_active
|
||||
}
|
||||
|
||||
@app.delete("/api/admin/tests/{test_id}", tags=["Admin"])
|
||||
def delete_test(test_id: UUID, session: Session = Depends(get_session), current_user: models.User = Depends(get_current_user)):
|
||||
from sqlmodel import select
|
||||
|
||||
Reference in New Issue
Block a user