Sina Media Lab commited on
Commit
08df020
·
1 Parent(s): fedff07
Files changed (1) hide show
  1. app.py +24 -29
app.py CHANGED
@@ -23,8 +23,8 @@ if 'pdf_data' not in st.session_state:
23
  st.session_state.pdf_data = None
24
  if 'selected_answer' not in st.session_state:
25
  st.session_state.selected_answer = None
26
- if 'button_label' not in st.session_state:
27
- st.session_state.button_label = "Submit"
28
 
29
  def reset_pdf_cache():
30
  st.session_state.pdf_data = None
@@ -107,10 +107,10 @@ def generate_new_question(module_name, module):
107
  def navigate_question(direction):
108
  if direction == "prev" and st.session_state.current_index > 0:
109
  st.session_state.current_index -= 1
110
- st.session_state.button_label = "Next Question"
111
  elif direction == "next" and st.session_state.current_index < len(st.session_state.questions) - 1:
112
  st.session_state.current_index += 1
113
- st.session_state.button_label = "Next Question"
114
 
115
  # Load all modules dynamically
116
  modules = load_modules()
@@ -132,7 +132,7 @@ if selected_module != st.session_state.current_module:
132
  st.session_state.module_question_count[selected_module] = 0
133
  st.session_state.module_correct_count[selected_module] = 0
134
  st.session_state.selected_answer = None
135
- st.session_state.button_label = "Submit"
136
 
137
  # Load the current module's question
138
  current_question = st.session_state.questions[st.session_state.current_index]
@@ -172,22 +172,27 @@ with st.form(key=f'question_form_{st.session_state.current_index}'):
172
  disabled=current_question['answered'] # Disable if the question has been answered
173
  )
174
 
175
- submit_button = st.form_submit_button(label=st.session_state.button_label)
176
 
177
  # Handle button state and answer submission
178
- if submit_button and st.session_state.button_label == "Submit":
179
- if selected_answer is not None:
180
- # Process the answer
181
- current_question['selected'] = selected_answer
182
- current_question['answered'] = True
183
- st.session_state.module_question_count[selected_module] += 1
184
-
185
- if selected_answer == current_question['correct_answer']:
186
- st.session_state.correct_count += 1
187
- st.session_state.module_correct_count[selected_module] += 1
188
-
189
- # Show correct/incorrect feedback and explanation
190
- st.session_state.button_label = "Next Question"
 
 
 
 
 
191
 
192
  # Show correct/incorrect feedback after submission
193
  if current_question.get('answered', False):
@@ -204,13 +209,3 @@ if current_question.get('answered', False):
204
  st.write("**Step-by-Step Solution:**")
205
  for step in current_question['step_by_step_solution']:
206
  st.write(step)
207
-
208
- # Change the button label immediately after showing the solution
209
- st.session_state.button_label = "Next Question"
210
-
211
- # Handle switching to the next question on button click
212
- if submit_button and st.session_state.button_label == "Next Question":
213
- new_question = generate_new_question(selected_module, modules[selected_module])
214
- st.session_state.questions.append(new_question)
215
- st.session_state.current_index = len(st.session_state.questions) - 1
216
- st.session_state.button_label = "Submit"
 
23
  st.session_state.pdf_data = None
24
  if 'selected_answer' not in st.session_state:
25
  st.session_state.selected_answer = None
26
+ if 'answered' not in st.session_state:
27
+ st.session_state.answered = False
28
 
29
  def reset_pdf_cache():
30
  st.session_state.pdf_data = None
 
107
  def navigate_question(direction):
108
  if direction == "prev" and st.session_state.current_index > 0:
109
  st.session_state.current_index -= 1
110
+ st.session_state.answered = True
111
  elif direction == "next" and st.session_state.current_index < len(st.session_state.questions) - 1:
112
  st.session_state.current_index += 1
113
+ st.session_state.answered = True
114
 
115
  # Load all modules dynamically
116
  modules = load_modules()
 
132
  st.session_state.module_question_count[selected_module] = 0
133
  st.session_state.module_correct_count[selected_module] = 0
134
  st.session_state.selected_answer = None
135
+ st.session_state.answered = False
136
 
137
  # Load the current module's question
138
  current_question = st.session_state.questions[st.session_state.current_index]
 
172
  disabled=current_question['answered'] # Disable if the question has been answered
173
  )
174
 
175
+ submit_button = st.form_submit_button(label="Submit/Next")
176
 
177
  # Handle button state and answer submission
178
+ if submit_button:
179
+ if not current_question['answered']:
180
+ if selected_answer is not None:
181
+ # Process the answer
182
+ current_question['selected'] = selected_answer
183
+ current_question['answered'] = True
184
+ st.session_state.module_question_count[selected_module] += 1
185
+
186
+ if selected_answer == current_question['correct_answer']:
187
+ st.session_state.correct_count += 1
188
+ st.session_state.module_correct_count[selected_module] += 1
189
+
190
+ else:
191
+ # If already answered, move to the next question
192
+ new_question = generate_new_question(selected_module, modules[selected_module])
193
+ st.session_state.questions.append(new_question)
194
+ st.session_state.current_index = len(st.session_state.questions) - 1
195
+ st.session_state.answered = False
196
 
197
  # Show correct/incorrect feedback after submission
198
  if current_question.get('answered', False):
 
209
  st.write("**Step-by-Step Solution:**")
210
  for step in current_question['step_by_step_solution']:
211
  st.write(step)