@@ -129,6 +129,7 @@ async def log_book_event(
129129 idx = await create_useinfo_entry (useinfo_entry )
130130 response_dict = dict (timestamp = entry .timestamp )
131131 if entry .event in EVENT2TABLE :
132+ create_answer_table = True
132133 rcd = runestone_component_dict [EVENT2TABLE [entry .event ]]
133134 if entry .event == "unittest" :
134135 # info we need looks like: "act":"percent:100.0:passed:2:failed:0"
@@ -144,23 +145,22 @@ async def log_book_event(
144145 entry .correct = ppf [1 ] == "100.0"
145146 entry .percent = float (ppf [1 ])
146147 elif entry .event == "timedExam" :
147- if entry .act == "start" :
148- entry .correct = 0
149- entry .incorrect = 0
150- entry .skipped = 0
151- entry .time_taken = 0
148+ if entry .act in ["start" , "pause" , "resume" ]:
149+ # We don't need these in the answer table but want the event to be timedExam.
150+ create_answer_table = False
152151 elif entry .event == "webwork" or entry .event == "hparsonsAnswer" :
153152 entry .answer = json .loads (useinfo_dict ["answer" ])
154153
155- valid_table = rcd .validator .from_orm (entry ) # type: ignore
156- # Do server-side grading if needed.
157- if feedback := await is_server_feedback (entry .div_id , user .course_name ):
158- # The grader should also be defined if there's feedback.
159- assert rcd .grader
160- response_dict .update (await rcd .grader (valid_table , feedback ))
154+ if create_answer_table :
155+ valid_table = rcd .validator .from_orm (entry ) # type: ignore
156+ # Do server-side grading if needed.
157+ if feedback := await is_server_feedback (entry .div_id , user .course_name ):
158+ # The grader should also be defined if there's feedback.
159+ assert rcd .grader
160+ response_dict .update (await rcd .grader (valid_table , feedback ))
161161
162- ans_idx = await create_answer_table_entry (valid_table , entry .event )
163- rslogger .debug (ans_idx )
162+ ans_idx = await create_answer_table_entry (valid_table , entry .event )
163+ rslogger .debug (ans_idx )
164164
165165 if idx :
166166 return make_json_response (status = status .HTTP_201_CREATED , detail = response_dict )
0 commit comments