elkay: api.py
Browse files- utils/api.py +13 -10
utils/api.py
CHANGED
|
@@ -637,23 +637,26 @@ def record_profit_puzzler_play(user_id: int, puzzles_solved: int, mistakes: int,
|
|
| 637 |
|
| 638 |
|
| 639 |
def generate_quiz(*, lesson_id: int | None, level_slug: str | None, lesson_title: str | None):
|
| 640 |
-
"""
|
| 641 |
-
Ask the backend to build a quiz from lesson chunks.
|
| 642 |
-
Returns a list of items: [{question, options:[...], answer_key:"A"}]
|
| 643 |
-
"""
|
| 644 |
payload = {
|
| 645 |
"lesson_id": int(lesson_id) if lesson_id is not None else None,
|
| 646 |
"level_slug": level_slug,
|
| 647 |
"lesson_title": lesson_title,
|
| 648 |
-
"k": 12,
|
| 649 |
}
|
| 650 |
|
| 651 |
-
|
| 652 |
-
|
| 653 |
-
|
| 654 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 655 |
|
| 656 |
-
# Normalize shapes: {"items":[...]} or just [...]
|
| 657 |
if isinstance(resp, dict):
|
| 658 |
return resp.get("items") or resp.get("quiz") or []
|
| 659 |
return resp if isinstance(resp, list) else []
|
|
|
|
| 637 |
|
| 638 |
|
| 639 |
def generate_quiz(*, lesson_id: int | None, level_slug: str | None, lesson_title: str | None):
|
|
|
|
|
|
|
|
|
|
|
|
|
| 640 |
payload = {
|
| 641 |
"lesson_id": int(lesson_id) if lesson_id is not None else None,
|
| 642 |
"level_slug": level_slug,
|
| 643 |
"lesson_title": lesson_title,
|
| 644 |
+
"k": 12,
|
| 645 |
}
|
| 646 |
|
| 647 |
+
try:
|
| 648 |
+
resp = _try_candidates("POST", [
|
| 649 |
+
("/quiz/auto", {"json": payload}),
|
| 650 |
+
])
|
| 651 |
+
except RuntimeError:
|
| 652 |
+
# Fallback for older backend that only has /generate_quiz
|
| 653 |
+
resp = _try_candidates("POST", [
|
| 654 |
+
("/generate_quiz", {"json": {
|
| 655 |
+
"lesson_id": payload["lesson_id"],
|
| 656 |
+
"level_slug": payload["level_slug"],
|
| 657 |
+
}}),
|
| 658 |
+
])
|
| 659 |
|
|
|
|
| 660 |
if isinstance(resp, dict):
|
| 661 |
return resp.get("items") or resp.get("quiz") or []
|
| 662 |
return resp if isinstance(resp, list) else []
|