Harshal Vhatkar commited on
Commit
8d3a72f
Β·
1 Parent(s): cf5bc29

fix analytics

Browse files
Files changed (1) hide show
  1. session_page.py +75 -21
session_page.py CHANGED
@@ -3730,12 +3730,18 @@ def display_quiz_tab(student_id, course_id, session_id):
3730
  """Display quizzes for students"""
3731
  st.header("Course Quizzes")
3732
  # Get available quizzes for this session, excluding pre-class quizzes
3733
- quizzes = quizzes_collection.find({
 
 
 
 
 
 
3734
  "course_id": course_id,
3735
  "session_id": session_id,
3736
  "status": "active",
3737
  "quiz_type": {"$ne": "pre_class"}
3738
- })
3739
  # Get available quizzes for this session
3740
  # quizzes = quizzes_collection.find({
3741
  # "course_id": course_id,
@@ -3743,13 +3749,57 @@ def display_quiz_tab(student_id, course_id, session_id):
3743
  # "status": "active"
3744
  # })
3745
 
3746
- quizzes = list(quizzes)
3747
  if not quizzes:
3748
  st.info("No quizzes available for this session.")
3749
  return
3750
 
3751
- for quiz in quizzes:
3752
- with st.expander(f"πŸ“ {quiz['title']}", expanded=True):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3753
  # Check if student has already taken this quiz
3754
  existing_score = get_student_quiz_score(quiz['_id'], student_id)
3755
 
@@ -3761,37 +3811,42 @@ def display_quiz_tab(student_id, course_id, session_id):
3761
  for i, question in enumerate(quiz['questions']):
3762
  st.markdown(f"**Question {i+1}:** {question['question']}")
3763
  for opt in question['options']:
3764
- if opt.startswith(question['correct_option']):
3765
  st.markdown(f"βœ… {opt}")
3766
  else:
3767
  st.markdown(f"- {opt}")
3768
-
3769
  else:
3770
  # Display quiz questions
3771
  st.write("Please select your answers:")
3772
 
3773
- # Create a form for quiz submission
3774
- with st.form(f"quiz_form_{quiz['_id']}"):
 
3775
  student_answers = {}
3776
 
3777
  for i, question in enumerate(quiz['questions']):
3778
  st.markdown(f"**Question {i+1}:** {question['question']}")
3779
- options = [opt for opt in question['options']]
3780
- student_answers[str(i)] = st.radio(
3781
- f"Select answer for question {i+1}:",
3782
  options=options,
3783
- key=f"q_{quiz['_id']}_{i}"
 
3784
  )
 
 
3785
 
3786
  # Submit button
3787
  if st.form_submit_button("Submit Quiz"):
3788
- print(student_answers)
3789
- score = submit_quiz_answers(quiz['_id'], student_id, student_answers)
3790
- if score is not None:
3791
- st.success(f"Quiz submitted successfully! Your score: {score:.1f}%")
3792
- st.rerun() # Refresh to show results
3793
  else:
3794
- st.error("Error submitting quiz. Please try again.")
 
 
 
 
 
3795
 
3796
  def display_session_content(student_id, course_id, session, username, user_type):
3797
  st.title(f"{session['title']}")
@@ -3865,8 +3920,7 @@ def display_session_content(student_id, course_id, session, username, user_type)
3865
  with tabs[2]:
3866
  display_post_class_content(session, student_id, course_id)
3867
  with tabs[3]:
3868
- if st.button("Generate Pre-class Analytics") and not st.session_state.analytics_data:
3869
- display_preclass_analytics2(session, course_id)
3870
  with tabs[4]:
3871
  display_inclass_analytics(session, course_id)
3872
  with tabs[5]:
 
3730
  """Display quizzes for students"""
3731
  st.header("Course Quizzes")
3732
  # Get available quizzes for this session, excluding pre-class quizzes
3733
+ # quizzes = quizzes_collection.find({
3734
+ # "course_id": course_id,
3735
+ # "session_id": session_id,
3736
+ # "status": "active",
3737
+ # "quiz_type": {"$ne": "pre_class"}
3738
+ # })
3739
+ quizzes = list(quizzes_collection.find({
3740
  "course_id": course_id,
3741
  "session_id": session_id,
3742
  "status": "active",
3743
  "quiz_type": {"$ne": "pre_class"}
3744
+ }))
3745
  # Get available quizzes for this session
3746
  # quizzes = quizzes_collection.find({
3747
  # "course_id": course_id,
 
3749
  # "status": "active"
3750
  # })
3751
 
3752
+ # quizzes = list(quizzes)
3753
  if not quizzes:
3754
  st.info("No quizzes available for this session.")
3755
  return
3756
 
3757
+ # for quiz in quizzes:
3758
+ # with st.expander(f"πŸ“ {quiz['title']}", expanded=True):
3759
+ # # Check if student has already taken this quiz
3760
+ # existing_score = get_student_quiz_score(quiz['_id'], student_id)
3761
+
3762
+ # if existing_score is not None:
3763
+ # st.success(f"Quiz completed! Your score: {existing_score:.1f}%")
3764
+
3765
+ # # Display correct answers after submission
3766
+ # st.subheader("Quiz Review")
3767
+ # for i, question in enumerate(quiz['questions']):
3768
+ # st.markdown(f"**Question {i+1}:** {question['question']}")
3769
+ # for opt in question['options']:
3770
+ # if opt.startswith(question['correct_option']):
3771
+ # st.markdown(f"βœ… {opt}")
3772
+ # else:
3773
+ # st.markdown(f"- {opt}")
3774
+
3775
+ # else:
3776
+ # # Display quiz questions
3777
+ # st.write("Please select your answers:")
3778
+
3779
+ # # Create a form for quiz submission
3780
+ # with st.form(f"quiz_form_{quiz['_id']}"):
3781
+ # student_answers = {}
3782
+
3783
+ # for i, question in enumerate(quiz['questions']):
3784
+ # st.markdown(f"**Question {i+1}:** {question['question']}")
3785
+ # options = [opt for opt in question['options']]
3786
+ # student_answers[str(i)] = st.radio(
3787
+ # f"Select answer for question {i+1}:",
3788
+ # options=options,
3789
+ # key=f"q_{quiz['_id']}_{i}"
3790
+ # )
3791
+
3792
+ # # Submit button
3793
+ # if st.form_submit_button("Submit Quiz"):
3794
+ # print(student_answers)
3795
+ # score = submit_quiz_answers(quiz['_id'], student_id, student_answers)
3796
+ # if score is not None:
3797
+ # st.success(f"Quiz submitted successfully! Your score: {score:.1f}%")
3798
+ # st.rerun() # Refresh to show results
3799
+ # else:
3800
+ # st.error("Error submitting quiz. Please try again.")
3801
+ for idx, quiz in enumerate(quizzes):
3802
+ with st.expander(f"πŸ“ {quiz.get('title', 'Quiz')}", expanded=True):
3803
  # Check if student has already taken this quiz
3804
  existing_score = get_student_quiz_score(quiz['_id'], student_id)
3805
 
 
3811
  for i, question in enumerate(quiz['questions']):
3812
  st.markdown(f"**Question {i+1}:** {question['question']}")
3813
  for opt in question['options']:
3814
+ if opt == question['correct_option']:
3815
  st.markdown(f"βœ… {opt}")
3816
  else:
3817
  st.markdown(f"- {opt}")
 
3818
  else:
3819
  # Display quiz questions
3820
  st.write("Please select your answers:")
3821
 
3822
+ # Create a form with unique key using both quiz ID and index
3823
+ form_key = f"quiz_form_{quiz['_id']}_{idx}"
3824
+ with st.form(key=form_key):
3825
  student_answers = {}
3826
 
3827
  for i, question in enumerate(quiz['questions']):
3828
  st.markdown(f"**Question {i+1}:** {question['question']}")
3829
+ options = question['options']
3830
+ answer = st.radio(
3831
+ f"Select answer:",
3832
  options=options,
3833
+ key=f"q_{quiz['_id']}_{idx}_{i}", # Make radio button key unique too
3834
+ index=None
3835
  )
3836
+ if answer:
3837
+ student_answers[str(i)] = answer
3838
 
3839
  # Submit button
3840
  if st.form_submit_button("Submit Quiz"):
3841
+ if len(student_answers) != len(quiz['questions']):
3842
+ st.error("Please answer all questions before submitting.")
 
 
 
3843
  else:
3844
+ score = submit_quiz_answers(quiz['_id'], student_id, student_answers)
3845
+ if score is not None:
3846
+ st.success(f"Quiz submitted successfully! Your score: {score:.1f}%")
3847
+ st.rerun()
3848
+ else:
3849
+ st.error("Error submitting quiz. Please try again.")
3850
 
3851
  def display_session_content(student_id, course_id, session, username, user_type):
3852
  st.title(f"{session['title']}")
 
3920
  with tabs[2]:
3921
  display_post_class_content(session, student_id, course_id)
3922
  with tabs[3]:
3923
+ display_preclass_analytics2(session, course_id)
 
3924
  with tabs[4]:
3925
  display_inclass_analytics(session, course_id)
3926
  with tabs[5]: