lanna_lalala;- commited on
Commit
e3a7a8c
·
1 Parent(s): 15c380e

update api.py

Browse files
Files changed (1) hide show
  1. 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
- return _req("GET", f"/students/{student_id}/quiz_avg").json()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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