lanna_lalala;- commited on
Commit ·
e3a7a8c
1
Parent(s): 15c380e
update api.py
Browse files- utils/api.py +17 -1
utils/api.py
CHANGED
|
@@ -134,7 +134,23 @@ def user_stats(student_id: int):
|
|
| 134 |
def list_assignments_for_student(student_id: int):
|
| 135 |
return _req("GET", f"/students/{student_id}/assignments").json()
|
| 136 |
def student_quiz_average(student_id: int):
|
| 137 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 138 |
def recent_lessons_for_student(student_id: int, limit: int = 5):
|
| 139 |
return _req("GET", f"/students/{student_id}/recent", params={"limit": limit}).json()
|
| 140 |
|
|
|
|
| 134 |
def list_assignments_for_student(student_id: int):
|
| 135 |
return _req("GET", f"/students/{student_id}/assignments").json()
|
| 136 |
def student_quiz_average(student_id: int):
|
| 137 |
+
d = _req("GET", f"/students/{student_id}/quiz_avg").json()
|
| 138 |
+
# Normalize common shapes: {"avg": 82}, {"score_pct": "82"}, "82", 82
|
| 139 |
+
if isinstance(d, dict):
|
| 140 |
+
for k in ("avg", "average", "score_pct", "score", "value"):
|
| 141 |
+
if k in d:
|
| 142 |
+
v = d[k]
|
| 143 |
+
break
|
| 144 |
+
else:
|
| 145 |
+
# fallback: first numeric-ish value
|
| 146 |
+
v = next((vv for vv in d.values() if isinstance(vv, (int, float, str))), 0)
|
| 147 |
+
else:
|
| 148 |
+
v = d
|
| 149 |
+
try:
|
| 150 |
+
# handle strings like "82" or "82%"
|
| 151 |
+
return int(round(float(str(v).strip().rstrip("%"))))
|
| 152 |
+
except Exception:
|
| 153 |
+
return 0
|
| 154 |
def recent_lessons_for_student(student_id: int, limit: int = 5):
|
| 155 |
return _req("GET", f"/students/{student_id}/recent", params={"limit": limit}).json()
|
| 156 |
|