Hi all!
We are using timed exams (without proctoring) and there was fix added to lilac.master
so we obviously wanted to pull that into our platforms however we had to revert it because we ran into an issue.
Looks like it’s a fairly big version bump for edx-proctoring
and it contains migrations as well…
When we added the change the learners were able to start the timed exams but unable to submit an attempt. When hitting “Yes, submit my timed exam”, nothing happens, the timer keeps counting and we see in the logs the following:
Traceback:
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/views/decorators/csrf.py" in wrapped_view
54. return view_func(*args, **kwargs)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/views/generic/base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/rest_framework/views.py" in dispatch
509. response = self.handle_exception(exc)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/edx_proctoring/views.py" in handle_exception
189. resp = super().handle_exception(exc)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/rest_framework/views.py" in handle_exception
469. self.raise_uncaught_exception(exc)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/rest_framework/views.py" in raise_uncaught_exception
480. raise exc
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/rest_framework/views.py" in dispatch
506. response = handler(request, *args, **kwargs)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/edx_proctoring/views.py" in put
1198. exam_attempt_id = update_attempt_status(
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/edx_proctoring/api.py" in update_attempt_status
1411. exam_attempt_obj.save()
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/model_utils/models.py" in save
38. super().save(*args, **kwargs)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/db/models/base.py" in save
743. self.save_base(using=using, force_insert=force_insert,
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/db/models/base.py" in save_base
767. pre_save.send(
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/dispatch/dispatcher.py" in send
173. return [
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/dispatch/dispatcher.py" in <listcomp>
174. (receiver, receiver(signal=self, sender=sender, **named))
File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/edx_proctoring/handlers.py" in on_attempt_changed
119. instructor_service.complete_student_attempt(username, content_id)
Exception Type: AttributeError at /api/edx_proctoring/v1/proctored_exam/attempt/220
Exception Value: 'InstructorService' object has no attribute 'complete_student_attempt'
I could also reproduce the error in devstack, both edx-devstack and tutor.
Are there any additional steps one has to take in order to apply this change without breaking the exams?
Thanks!