Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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 @@ -499,7 +499,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
16 changes: 13 additions & 3 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
# 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:
course_overview.entrance_exam_minimum_score_pct = course.entrance_exam_minimum_score_pct
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())
):
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