diff --git a/lms/djangoapps/course_home_api/dates/v1/serializers.py b/lms/djangoapps/course_home_api/dates/v1/serializers.py index 1f27035d5f..c6ba00053c 100644 --- a/lms/djangoapps/course_home_api/dates/v1/serializers.py +++ b/lms/djangoapps/course_home_api/dates/v1/serializers.py @@ -21,10 +21,10 @@ class DateSummarySerializer(serializers.Serializer): title = serializers.CharField() def get_learner_has_access(self, block): - learner_is_verified = self.context.get('learner_is_verified', False) + learner_is_full_access = self.context.get('learner_is_full_access', False) block_is_verified = (getattr(block, 'contains_gated_content', False) or isinstance(block, VerificationDeadlineDate)) - return (not block_is_verified) or learner_is_verified + return (not block_is_verified) or learner_is_full_access def get_link(self, block): if block.link: @@ -39,6 +39,6 @@ class DatesTabSerializer(serializers.Serializer): """ course_date_blocks = DateSummarySerializer(many=True) display_reset_dates_text = serializers.BooleanField() - learner_is_verified = serializers.BooleanField() + learner_is_full_access = serializers.BooleanField() user_timezone = serializers.CharField() verified_upgrade_link = serializers.URLField() diff --git a/lms/djangoapps/course_home_api/dates/v1/tests/test_views.py b/lms/djangoapps/course_home_api/dates/v1/tests/test_views.py index 8d18a36aa6..e230542d03 100644 --- a/lms/djangoapps/course_home_api/dates/v1/tests/test_views.py +++ b/lms/djangoapps/course_home_api/dates/v1/tests/test_views.py @@ -2,7 +2,7 @@ Tests for Dates Tab API in the Course Home API """ - +from datetime import datetime import ddt from django.urls import reverse @@ -10,6 +10,7 @@ from django.urls import reverse from course_modes.models import CourseMode from lms.djangoapps.course_home_api.tests.utils import BaseCourseHomeTests from lms.djangoapps.course_home_api.toggles import COURSE_HOME_MICROFRONTEND, COURSE_HOME_MICROFRONTEND_DATES_TAB +from openedx.features.content_type_gating.models import ContentTypeGatingConfig from student.models import CourseEnrollment @@ -22,6 +23,7 @@ class DatesTabTestViews(BaseCourseHomeTests): def setUpClass(cls): BaseCourseHomeTests.setUpClass() cls.url = reverse('course-home-dates-tab', args=[cls.course.id]) + ContentTypeGatingConfig.objects.create(enabled=True, enabled_as_of=datetime(2017, 1, 1)) @COURSE_HOME_MICROFRONTEND.override(active=True) @COURSE_HOME_MICROFRONTEND_DATES_TAB.override(active=True) @@ -33,7 +35,7 @@ class DatesTabTestViews(BaseCourseHomeTests): # Pulling out the date blocks to check learner has access. date_blocks = response.data.get('course_date_blocks') - self.assertEqual(response.data.get('learner_is_verified'), enrollment_mode == CourseMode.VERIFIED) + self.assertEqual(response.data.get('learner_is_full_access'), enrollment_mode == CourseMode.VERIFIED) self.assertTrue(all(block.get('learner_has_access') for block in date_blocks)) @COURSE_HOME_MICROFRONTEND.override(active=True) @@ -41,7 +43,7 @@ class DatesTabTestViews(BaseCourseHomeTests): def test_get_authenticated_user_not_enrolled(self): response = self.client.get(self.url) self.assertEqual(response.status_code, 200) - self.assertFalse(response.data.get('learner_is_verified')) + self.assertFalse(response.data.get('learner_is_full_access')) def test_get_unauthenticated_user(self): self.client.logout() diff --git a/lms/djangoapps/course_home_api/dates/v1/views.py b/lms/djangoapps/course_home_api/dates/v1/views.py index 41d0786a93..da226d0996 100644 --- a/lms/djangoapps/course_home_api/dates/v1/views.py +++ b/lms/djangoapps/course_home_api/dates/v1/views.py @@ -18,6 +18,7 @@ from lms.djangoapps.course_home_api.dates.v1.serializers import DatesTabSerializ from lms.djangoapps.course_home_api.toggles import course_home_mfe_dates_tab_is_active from openedx.core.djangoapps.enrollments.api import get_enrollment from openedx.features.course_experience.utils import dates_banner_should_display +from openedx.features.content_type_gating.models import ContentTypeGatingConfig class DatesTabView(RetrieveAPIView): @@ -44,7 +45,7 @@ class DatesTabView(RetrieveAPIView): title: (str) The title of the date event display_reset_dates_text: (bool) Indicates whether the reset dates banner should be shown for the given user - learner_is_verified: (bool) Indicates if the user is verified in the course + learner_is_full_access: (bool) Indicates if the user is verified in the course user_timezone: (str) The user's preferred timezone verified_upgrade_link: (str) The link for upgrading to the Verified track in a course @@ -74,10 +75,10 @@ class DatesTabView(RetrieveAPIView): blocks = get_course_date_blocks(course, request.user, request, include_access=True, include_past_dates=True) display_reset_dates_text = dates_banner_should_display(course_key, request) - learner_is_verified = False - enrollment = get_enrollment(request.user.username, course_key_string) - if enrollment: - learner_is_verified = enrollment.get('mode') == 'verified' + learner_is_full_access = not ContentTypeGatingConfig.enabled_for_enrollment( + user=request.user, + course_key=course_key, + ) # User locale settings user_timezone_locale = user_timezone_locale_prefs(request) @@ -86,12 +87,12 @@ class DatesTabView(RetrieveAPIView): data = { 'course_date_blocks': [block for block in blocks if not isinstance(block, TodaysDate)], 'display_reset_dates_text': display_reset_dates_text, - 'learner_is_verified': learner_is_verified, + 'learner_is_full_access': learner_is_full_access, 'user_timezone': user_timezone, 'verified_upgrade_link': verified_upgrade_deadline_link(request.user, course=course), } context = self.get_serializer_context() - context['learner_is_verified'] = learner_is_verified + context['learner_is_full_access'] = learner_is_full_access serializer = self.get_serializer_class()(data, context=context) return Response(serializer.data) diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index 68858852d6..5d89cfbe2d 100644 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -3097,6 +3097,7 @@ class DatesTabTestCase(ModuleStoreTestCase): self.user = UserFactory() self.client.login(username=self.user.username, password=TEST_PASSWORD) + ContentTypeGatingConfig.objects.create(enabled=True, enabled_as_of=datetime(2017, 1, 1)) def _get_response(self, course): """ Returns the HTML for the progress page """ diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py index 413d45ba02..098abfd742 100644 --- a/lms/djangoapps/courseware/views/views.py +++ b/lms/djangoapps/courseware/views/views.py @@ -1053,10 +1053,7 @@ def dates(request, course_id): course_date_blocks = get_course_date_blocks(course, request.user, request, include_access=True, include_past_dates=True) - learner_is_verified = False - enrollment = get_enrollment(request.user.username, course_id) - if enrollment: - learner_is_verified = enrollment.get('mode') == 'verified' + learner_is_full_access = not ContentTypeGatingConfig.enabled_for_enrollment(request.user, course_key) # User locale settings user_timezone_locale = user_timezone_locale_prefs(request) @@ -1069,7 +1066,7 @@ def dates(request, course_id): 'course': course, 'course_date_blocks': course_date_blocks, 'verified_upgrade_link': verified_upgrade_deadline_link(request.user, course=course), - 'learner_is_verified': learner_is_verified, + 'learner_is_full_access': learner_is_full_access, 'user_timezone': user_timezone, 'user_language': user_language, 'supports_preview_menu': True, diff --git a/lms/templates/courseware/dates.html b/lms/templates/courseware/dates.html index 14df637b26..926eb43e12 100644 --- a/lms/templates/courseware/dates.html +++ b/lms/templates/courseware/dates.html @@ -30,15 +30,15 @@ from openedx.core.djangolib.markup import HTML, Text <% due_next_set = False %> % for block in course_date_blocks: <% block_is_verified = (hasattr(block, 'contains_gated_content') and block.contains_gated_content) or isinstance(block, VerificationDeadlineDate) %> - <% learner_has_access = not block_is_verified or learner_is_verified %> + <% learner_has_access = not block_is_verified or learner_is_full_access %> <% access_class = '' if learner_has_access else 'no-access' %> <% is_assignment = isinstance(block, CourseAssignmentDate) %> <% todays_date = 'todays-date' if isinstance(block, TodaysDate) else '' %> <% past_date = 'past-date' if block.date and block.date < block.current_time else '' %> - <% past_due = 'past-due' if learner_is_verified and is_assignment and block.past_due else '' %> - <% due_in_future = True if learner_is_verified and is_assignment and block.date and block.date >= block.current_time else False %> - <% not_released = 'not-released' if learner_is_verified and is_assignment and not block.title_html else '' %> - % if not (learner_is_verified and isinstance(block, VerifiedUpgradeDeadlineDate)): + <% past_due = 'past-due' if learner_is_full_access and is_assignment and block.past_due else '' %> + <% due_in_future = True if learner_is_full_access and is_assignment and block.date and block.date >= block.current_time else False %> + <% not_released = 'not-released' if learner_is_full_access and is_assignment and not block.title_html else '' %> + % if not (learner_is_full_access and isinstance(block, VerifiedUpgradeDeadlineDate)):