diff --git a/lms/djangoapps/courseware/tests/test_about.py b/lms/djangoapps/courseware/tests/test_about.py index cfa69b58ae..5f1189543a 100644 --- a/lms/djangoapps/courseware/tests/test_about.py +++ b/lms/djangoapps/courseware/tests/test_about.py @@ -140,6 +140,34 @@ class AboutTestCase(LoginEnrollmentTestCase, SharedModuleStoreTestCase, EventTra course_home_url = reverse('openedx.course_experience.course_home', args=[text_type(self.course.id)]) self.assertTrue(target_url.endswith(course_home_url)) + @patch.dict(settings.FEATURES, {'ENABLE_COURSE_HOME_REDIRECT': False}) + @patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': True}) + def test_logged_in_marketing_without_course_home_redirect(self): + """ + Verify user is not redirected to course home page when + ENABLE_COURSE_HOME_REDIRECT is set to False + """ + self.setup_user() + url = reverse('about_course', args=[text_type(self.course.id)]) + resp = self.client.get(url) + # should not be redirected + self.assertEqual(resp.status_code, 200) + self.assertIn("OOGIE BLOOGIE", resp.content) + + @patch.dict(settings.FEATURES, {'ENABLE_COURSE_HOME_REDIRECT': True}) + @patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': False}) + def test_logged_in_marketing_without_mktg_site(self): + """ + Verify user is not redirected to course home page when + ENABLE_MKTG_SITE is set to False + """ + self.setup_user() + url = reverse('about_course', args=[text_type(self.course.id)]) + resp = self.client.get(url) + # should not be redirected + self.assertEqual(resp.status_code, 200) + self.assertIn("OOGIE BLOOGIE", resp.content) + @patch.dict(settings.FEATURES, {'ENABLE_PREREQUISITE_COURSES': True}) def test_pre_requisite_course(self): pre_requisite_course = CourseFactory.create(org='edX', course='900', display_name='pre requisite course') diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py index 597f53e7d4..18a5b220ac 100644 --- a/lms/djangoapps/courseware/views/views.py +++ b/lms/djangoapps/courseware/views/views.py @@ -759,15 +759,15 @@ def course_about(request, course_id): if not can_self_enroll_in_course(course_key): return redirect(reverse('dashboard')) + # If user needs to be redirected to course home then redirect + if _course_home_redirect_enabled(): + return redirect(reverse(course_home_url_name(course_key), args=[text_type(course_key)])) + with modulestore().bulk_operations(course_key): permission = get_permission_for_course_about() course = get_course_with_access(request.user, permission, course_key) course_details = CourseDetails.populate(course) modes = CourseMode.modes_for_course_dict(course_key) - - if configuration_helpers.get_value('ENABLE_MKTG_SITE', settings.FEATURES.get('ENABLE_MKTG_SITE', False)): - return redirect(reverse(course_home_url_name(course.id), args=[text_type(course.id)])) - registered = registered_for_course(course, request.user) staff_access = bool(has_access(request.user, 'staff', course)) @@ -1138,6 +1138,21 @@ def _credit_course_requirements(course_key, student): } +def _course_home_redirect_enabled(): + """ + Return True value if user needs to be redirected to course home based on value of + `ENABLE_MKTG_SITE` and `ENABLE_COURSE_HOME_REDIRECT feature` flags + + Returns: boolean True or False + """ + if configuration_helpers.get_value( + 'ENABLE_MKTG_SITE', settings.FEATURES.get('ENABLE_MKTG_SITE', False) + ) and configuration_helpers.get_value( + 'ENABLE_COURSE_HOME_REDIRECT', settings.FEATURES.get('ENABLE_COURSE_HOME_REDIRECT', True) + ): + return True + + @login_required @ensure_valid_course_key def submission_history(request, course_id, student_username, location):