diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py
index 113d678446..a8dac6a1b2 100644
--- a/lms/djangoapps/courseware/tests/test_views.py
+++ b/lms/djangoapps/courseware/tests/test_views.py
@@ -2517,9 +2517,39 @@ class TestIndexView(ModuleStoreTestCase):
self.assertIn('xblock-student_view-html', response.content)
self.assertIn('xblock-student_view-video', response.content)
+ @patch('courseware.views.views.CourseTabView.course_open_for_learner_enrollment')
+ @patch('openedx.core.djangoapps.util.user_messages.PageLevelMessages.register_warning_message')
+ def test_courseware_messages_differentiate_for_anonymous_users(
+ self, patch_register_warning_message, patch_course_open_for_learner_enrollment
+ ):
+ """
+ Tests that the anonymous user case for the
+ register_user_access_warning_messages returns different
+ messaging based on the possibility of enrollment
+ """
+ course = CourseFactory()
+
+ user = self.create_user_for_course(course, CourseUserType.ANONYMOUS)
+ request = RequestFactory().get('/')
+ request.user = user
+
+ patch_course_open_for_learner_enrollment.return_value = False
+ views.CourseTabView.register_user_access_warning_messages(request, course)
+ open_for_enrollment_message = patch_register_warning_message.mock_calls[0][1][1]
+
+ patch_register_warning_message.reset_mock()
+
+ patch_course_open_for_learner_enrollment.return_value = True
+ views.CourseTabView.register_user_access_warning_messages(request, course)
+ closed_to_enrollment_message = patch_register_warning_message.mock_calls[0][1][1]
+
+ assert open_for_enrollment_message != closed_to_enrollment_message
+
@patch('openedx.core.djangoapps.util.user_messages.PageLevelMessages.register_warning_message')
def test_courseware_messages_masters_only(self, patch_register_warning_message):
- with patch('courseware.views.views.CourseTabView.should_show_enroll_button') as patch_should_show_enroll_button:
+ with patch(
+ 'courseware.views.views.CourseTabView.course_open_for_learner_enrollment'
+ ) as patch_course_open_for_learner_enrollment:
course = CourseFactory()
user = self.create_user_for_course(course, CourseUserType.UNENROLLED)
@@ -2528,7 +2558,7 @@ class TestIndexView(ModuleStoreTestCase):
button_html = ''
- patch_should_show_enroll_button.return_value = False
+ patch_course_open_for_learner_enrollment.return_value = False
views.CourseTabView.register_user_access_warning_messages(request, course)
# pull message out of the calls to the mock so that
# we can make finer grained assertions than mock provides
@@ -2537,7 +2567,7 @@ class TestIndexView(ModuleStoreTestCase):
patch_register_warning_message.reset_mock()
- patch_should_show_enroll_button.return_value = True
+ patch_course_open_for_learner_enrollment.return_value = True
views.CourseTabView.register_user_access_warning_messages(request, course)
# pull message out of the calls to the mock so that
# we can make finer grained assertions than mock provides
@@ -2565,7 +2595,10 @@ class TestIndexView(ModuleStoreTestCase):
patch_is_masters_only.return_value = is_masters_only
course.invitation_only = invitation_only
- self.assertEqual(views.CourseTabView.should_show_enroll_button(course), expected_should_show_enroll_button)
+ self.assertEqual(
+ views.CourseTabView.course_open_for_learner_enrollment(course),
+ expected_should_show_enroll_button
+ )
@ddt.ddt
diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py
index dd8b73a9b1..ad4b361204 100644
--- a/lms/djangoapps/courseware/views/views.py
+++ b/lms/djangoapps/courseware/views/views.py
@@ -535,23 +535,38 @@ class CourseTabView(EdxFragmentView):
allow_anonymous = allow_public_access(course, [COURSE_VISIBILITY_PUBLIC])
if request.user.is_anonymous and not allow_anonymous:
- PageLevelMessages.register_warning_message(
- request,
- Text(_(u"To see course content, {sign_in_link} or {register_link}.")).format(
- sign_in_link=HTML(u'{sign_in_label}').format(
- sign_in_label=_("sign in"),
- current_url=urlquote_plus(request.path),
- ),
- register_link=HTML(u'{register_label}').format(
- register_label=_("register"),
- current_url=urlquote_plus(request.path),
- ),
+ if CourseTabView.course_open_for_learner_enrollment(course):
+ PageLevelMessages.register_warning_message(
+ request,
+ Text(_(u"To see course content, {sign_in_link} or {register_link}.")).format(
+ sign_in_link=HTML(u'{sign_in_label}').format(
+ sign_in_label=_("sign in"),
+ current_url=urlquote_plus(request.path),
+ ),
+ register_link=HTML(u'{register_label}').format(
+ register_label=_("register"),
+ current_url=urlquote_plus(request.path),
+ ),
+ )
+ )
+ else:
+ PageLevelMessages.register_warning_message(
+ request,
+ Text(_(u"{sign_in_link} or {register_link}.")).format(
+ sign_in_link=HTML(u'{sign_in_label}').format(
+ sign_in_label=_("Sign in"),
+ current_url=urlquote_plus(request.path),
+ ),
+ register_link=HTML(u'{register_label}').format(
+ register_label=_("register"),
+ current_url=urlquote_plus(request.path),
+ ),
+ )
)
- )
else:
if not CourseEnrollment.is_enrolled(request.user, course.id) and not allow_anonymous:
# Only show enroll button if course is open for enrollment.
- if CourseTabView.should_show_enroll_button(course):
+ if CourseTabView.course_open_for_learner_enrollment(course):
enroll_message = _(u'You must be enrolled in the course to see course content. \
{enroll_link_start}Enroll now{enroll_link_end}.')
PageLevelMessages.register_warning_message(
@@ -568,7 +583,7 @@ class CourseTabView(EdxFragmentView):
)
@staticmethod
- def should_show_enroll_button(course):
+ def course_open_for_learner_enrollment(course):
return (course_open_for_self_enrollment(course.id)
and not course.invitation_only
and not CourseMode.is_masters_only(course.id))
diff --git a/openedx/features/course_experience/views/course_home_messages.py b/openedx/features/course_experience/views/course_home_messages.py
index 56521f2711..3edce019e9 100644
--- a/openedx/features/course_experience/views/course_home_messages.py
+++ b/openedx/features/course_experience/views/course_home_messages.py
@@ -112,11 +112,12 @@ def _register_course_home_messages(request, course, user_access, course_start_da
allow_anonymous = allow_public_access(course, [COURSE_VISIBILITY_PUBLIC])
if user_access['is_anonymous'] and not allow_anonymous:
+ sign_in_or_register_text = (_(u'{sign_in_link} or {register_link} and then enroll in this course.')
+ if not CourseMode.is_masters_only(course.id)
+ else _(u'{sign_in_link} or {register_link}.'))
CourseHomeMessages.register_info_message(
request,
- Text(_(
- u'{sign_in_link} or {register_link} and then enroll in this course.'
- )).format(
+ Text(sign_in_or_register_text).format(
sign_in_link=HTML(u'{sign_in_label}').format(
sign_in_label=_('Sign in'),
current_url=urlquote_plus(request.path),