Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion cms/djangoapps/contentstore/tests/test_course_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,11 @@ def test_entrance_exam_created_updated_and_deleted_successfully(self):
course = modulestore().get_course(self.course.id)
self.assertEqual(response.status_code, 200)
self.assertFalse(course.entrance_exam_enabled)
self.assertEqual(course.entrance_exam_minimum_score_pct, None)
entrance_exam_minimum_score_pct = float(settings.ENTRANCE_EXAM_MIN_SCORE_PCT)
if entrance_exam_minimum_score_pct.is_integer():
entrance_exam_minimum_score_pct = entrance_exam_minimum_score_pct / 100

self.assertEqual(course.entrance_exam_minimum_score_pct, entrance_exam_minimum_score_pct)

self.assertFalse(milestones_helpers.any_unfulfilled_milestones(self.course.id, self.user.id),
msg='The entrance exam should not be required anymore')
Expand Down
2 changes: 1 addition & 1 deletion cms/djangoapps/contentstore/views/entrance_exam.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ def _delete_entrance_exam(request, course_key):
if course.entrance_exam_id:
metadata = {
'entrance_exam_enabled': False,
'entrance_exam_minimum_score_pct': None,
'entrance_exam_minimum_score_pct': _get_default_entrance_exam_minimum_pct(),
'entrance_exam_id': None,
}
CourseMetadata.update_from_dict(metadata, course, request.user)
Expand Down
18 changes: 14 additions & 4 deletions openedx/core/djangoapps/content/course_overviews/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,10 +266,20 @@ def _create_or_update(cls, course): # lint-amnesty, pylint: disable=too-many-st
course_overview.entrance_exam_id = course.entrance_exam_id or ''
# Despite it being a float, the course object defaults to an int. So we will detect that case and update
# it to be a float like everything else.
if isinstance(course.entrance_exam_minimum_score_pct, int):
course_overview.entrance_exam_minimum_score_pct = course.entrance_exam_minimum_score_pct / 100
elif course.entrance_exam_minimum_score_pct is not None:
course_overview.entrance_exam_minimum_score_pct = course.entrance_exam_minimum_score_pct
# Extra handling: entrance_exam_minimum_score_pct can be None (e.g. when exams are disabled in Studio),
# so we fall back to settings.ENTRANCE_EXAM_MIN_SCORE_PCT to prevent CourseOverview save failures.
if course.entrance_exam_minimum_score_pct is None:
entrance_exam_minimum_score_pct = float(settings.ENTRANCE_EXAM_MIN_SCORE_PCT)
else:
entrance_exam_minimum_score_pct = course.entrance_exam_minimum_score_pct

if (
isinstance(entrance_exam_minimum_score_pct, int)
or (isinstance(entrance_exam_minimum_score_pct, float) and entrance_exam_minimum_score_pct.is_integer())
Comment thread
jansenk marked this conversation as resolved.
Resolved
):
entrance_exam_minimum_score_pct = entrance_exam_minimum_score_pct / 100

course_overview.entrance_exam_minimum_score_pct = entrance_exam_minimum_score_pct

course_overview.force_on_flexible_peer_openassessments = course.force_on_flexible_peer_openassessments

Expand Down
Loading