elkay: lesson.py and teacher link
Browse files- phase/Student_view/teacherlink.py +22 -7
- utils/api.py +12 -0
phase/Student_view/teacherlink.py
CHANGED
|
@@ -214,18 +214,33 @@ def show_code():
|
|
| 214 |
|
| 215 |
c1, c2 = st.columns(2)
|
| 216 |
with c1:
|
| 217 |
-
# pass lesson & assignment to the Lessons page
|
| 218 |
if st.button("▶️ Start Lesson", key=f"start_lesson_{r.get('assignment_id')}"):
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 223 |
st.session_state.lesson_route = {
|
| 224 |
"source": "teacher",
|
| 225 |
-
"lesson_id":
|
| 226 |
-
"assignment_id":
|
| 227 |
}
|
| 228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 229 |
st.session_state.current_page = "Lessons"
|
| 230 |
st.rerun()
|
| 231 |
with c2:
|
|
|
|
| 214 |
|
| 215 |
c1, c2 = st.columns(2)
|
| 216 |
with c1:
|
|
|
|
| 217 |
if st.button("▶️ Start Lesson", key=f"start_lesson_{r.get('assignment_id')}"):
|
| 218 |
+
lesson_id = int(r.get("lesson_id"))
|
| 219 |
+
assignment_id = int(r.get("assignment_id"))
|
| 220 |
+
|
| 221 |
+
# 1) Tell backend this assignment has started
|
| 222 |
+
try:
|
| 223 |
+
_mark_assignment_started(student_id, assignment_id)
|
| 224 |
+
# 2) Nudge a first position so the bar moves from 0%
|
| 225 |
+
_set_assignment_progress(student_id, assignment_id, current_pos=1, progress=0.05)
|
| 226 |
+
except Exception as e:
|
| 227 |
+
st.warning(f"Could not mark as started yet. Continuing anyway. {e}")
|
| 228 |
+
|
| 229 |
+
# 3) Navigate
|
| 230 |
+
st.session_state.selected_lesson = lesson_id
|
| 231 |
+
st.session_state.selected_assignment = assignment_id
|
| 232 |
st.session_state.lesson_route = {
|
| 233 |
"source": "teacher",
|
| 234 |
+
"lesson_id": lesson_id,
|
| 235 |
+
"assignment_id": assignment_id,
|
| 236 |
}
|
| 237 |
|
| 238 |
+
# Optional: clear any cached data so the updated status shows next render
|
| 239 |
+
try:
|
| 240 |
+
st.cache_data.clear()
|
| 241 |
+
except Exception:
|
| 242 |
+
pass
|
| 243 |
+
|
| 244 |
st.session_state.current_page = "Lessons"
|
| 245 |
st.rerun()
|
| 246 |
with c2:
|
utils/api.py
CHANGED
|
@@ -328,6 +328,18 @@ def create_quiz(lesson_id: int, title: str, items: list[dict], settings: dict):
|
|
| 328 |
}).json()
|
| 329 |
return d.get("quiz_id", d.get("id", d))
|
| 330 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 331 |
# def get_quiz(quiz_id: int):
|
| 332 |
# return _json_or_raise(_req("GET", f"/quizzes/{quiz_id}"))
|
| 333 |
|
|
|
|
| 328 |
}).json()
|
| 329 |
return d.get("quiz_id", d.get("id", d))
|
| 330 |
|
| 331 |
+
def mark_assignment_started(student_id: int, assignment_id: int):
|
| 332 |
+
return _req("POST", f"/assignments/{assignment_id}/start",
|
| 333 |
+
json={"student_id": student_id}).json()
|
| 334 |
+
|
| 335 |
+
def set_assignment_progress(student_id: int, assignment_id: int,
|
| 336 |
+
current_pos: int, progress: float):
|
| 337 |
+
return _req("PATCH", f"/assignments/{assignment_id}/progress",
|
| 338 |
+
json={"student_id": student_id,
|
| 339 |
+
"current_pos": current_pos,
|
| 340 |
+
"progress": progress}).json()
|
| 341 |
+
|
| 342 |
+
|
| 343 |
# def get_quiz(quiz_id: int):
|
| 344 |
# return _json_or_raise(_req("GET", f"/quizzes/{quiz_id}"))
|
| 345 |
|