diff --git a/lms/djangoapps/course_home_api/outline/v1/serializers.py b/lms/djangoapps/course_home_api/outline/v1/serializers.py index 6eb5c784012208e190fc57e9bc2404612f8fa151..06c05ad9bad8a4b7706858b4d688b21025bbec1e 100644 --- a/lms/djangoapps/course_home_api/outline/v1/serializers.py +++ b/lms/djangoapps/course_home_api/outline/v1/serializers.py @@ -111,7 +111,6 @@ class OutlineTabSerializer(DatesBannerSerializerMixin, VerifiedModeSerializerMix """ access_expiration = serializers.DictField() course_blocks = CourseBlockSerializer() - course_expired_html = serializers.CharField() course_goals = CourseGoalsSerializer() course_tools = CourseToolSerializer(many=True) dates_widget = DatesWidgetSerializer() @@ -119,6 +118,5 @@ class OutlineTabSerializer(DatesBannerSerializerMixin, VerifiedModeSerializerMix handouts_html = serializers.CharField() has_ended = serializers.BooleanField() offer = serializers.DictField() - offer_html = serializers.CharField() resume_course = ResumeCourseSerializer() welcome_message_html = serializers.CharField() diff --git a/lms/djangoapps/course_home_api/outline/v1/tests/test_views.py b/lms/djangoapps/course_home_api/outline/v1/tests/test_views.py index 751f92c0445167d1463782ef0c788d561c626479..7a6a8975b75009349b1f8826f37e735c2137d6c9 100644 --- a/lms/djangoapps/course_home_api/outline/v1/tests/test_views.py +++ b/lms/djangoapps/course_home_api/outline/v1/tests/test_views.py @@ -171,11 +171,9 @@ class OutlineTabTestViews(BaseCourseHomeTests): response = self.client.get(self.url) self.assertIsNone(response.data['offer']) - self.assertIsNone(response.data['offer_html']) with override_waffle_flag(DISCOUNT_APPLICABILITY_FLAG, active=True): response = self.client.get(self.url) - self.assertIsNotNone(response.data['offer_html']) # Just a quick spot check that the dictionary looks like what we expect self.assertEqual(response.data['offer']['code'], 'EDXWELCOME') @@ -188,11 +186,9 @@ class OutlineTabTestViews(BaseCourseHomeTests): response = self.client.get(self.url) self.assertIsNone(response.data['access_expiration']) - self.assertIsNone(response.data['course_expired_html']) enrollment.update_enrollment(CourseMode.AUDIT) response = self.client.get(self.url) - self.assertIsNotNone(response.data['course_expired_html']) # Just a quick spot check that the dictionary looks like what we expect deadline = enrollment.created + MIN_DURATION @@ -297,8 +293,8 @@ class OutlineTabTestViews(BaseCourseHomeTests): @override_experiment_waffle_flag(COURSE_HOME_MICROFRONTEND, active=True) @override_waffle_flag(COURSE_HOME_MICROFRONTEND_OUTLINE_TAB, active=True) @override_waffle_flag(COURSE_ENABLE_UNENROLLED_ACCESS_FLAG, active=True) - @patch('lms.djangoapps.course_home_api.outline.v1.views.generate_offer_html', new=Mock(return_value='<p>Offer</p>')) - @patch('lms.djangoapps.course_home_api.outline.v1.views.generate_course_expired_message', new=Mock(return_value='<p>Expired</p>')) + @patch('lms.djangoapps.course_home_api.outline.v1.views.generate_offer_data', new=Mock(return_value={'a': 1})) + @patch('lms.djangoapps.course_home_api.outline.v1.views.get_access_expiration_data', new=Mock(return_value={'b': 1})) @ddt.data(*itertools.product([True, False], [True, False], [None, COURSE_VISIBILITY_PUBLIC, COURSE_VISIBILITY_PUBLIC_OUTLINE])) @ddt.unpack @@ -329,8 +325,8 @@ class OutlineTabTestViews(BaseCourseHomeTests): data = self.client.get(self.url).data self.assertEqual(data['course_blocks'] is not None, show_enrolled or is_public or is_public_outline) self.assertEqual(data['handouts_html'] is not None, show_enrolled or is_public) - self.assertEqual(data['offer_html'] is not None, show_enrolled) - self.assertEqual(data['course_expired_html'] is not None, show_enrolled) + self.assertEqual(data['offer'] is not None, show_enrolled) + self.assertEqual(data['access_expiration'] is not None, show_enrolled) self.assertEqual(data['resume_course']['url'] is not None, show_enrolled) @override_experiment_waffle_flag(COURSE_HOME_MICROFRONTEND, active=True) diff --git a/lms/djangoapps/course_home_api/outline/v1/views.py b/lms/djangoapps/course_home_api/outline/v1/views.py index 548e5733cb771268ebc1c6fd7f04a7d852ff835f..15d2298f031a4876a96d491245602291b6e8ce29 100644 --- a/lms/djangoapps/course_home_api/outline/v1/views.py +++ b/lms/djangoapps/course_home_api/outline/v1/views.py @@ -30,14 +30,14 @@ from lms.djangoapps.courseware.courses import get_course_date_blocks, get_course from lms.djangoapps.courseware.date_summary import TodaysDate from lms.djangoapps.courseware.masquerade import setup_masquerade from openedx.core.djangoapps.content.course_overviews.models import CourseOverview -from openedx.features.course_duration_limits.access import generate_course_expired_message, get_access_expiration_data +from openedx.features.course_duration_limits.access import get_access_expiration_data from openedx.features.course_experience import COURSE_ENABLE_UNENROLLED_ACCESS_FLAG from openedx.features.course_experience.course_tools import CourseToolsPluginManager from openedx.features.course_experience.course_updates import ( dismiss_current_update_for_user, get_current_update_for_user, ) from openedx.features.course_experience.utils import get_course_outline_block_tree -from openedx.features.discounts.utils import generate_offer_data, generate_offer_html +from openedx.features.discounts.utils import generate_offer_data from common.djangoapps.student.models import CourseEnrollment from xmodule.course_module import COURSE_VISIBILITY_PUBLIC, COURSE_VISIBILITY_PUBLIC_OUTLINE from xmodule.modulestore.django import modulestore @@ -176,11 +176,8 @@ class OutlineTabView(RetrieveAPIView): show_handouts = show_enrolled or allow_public handouts_html = get_course_info_section(request, request.user, course, 'handouts') if show_handouts else '' - # TODO: TNL-7185 Legacy: Refactor to return the offer & expired data and format the message in the MFE offer_data = show_enrolled and generate_offer_data(request.user, course_overview) - offer_html = show_enrolled and generate_offer_html(request.user, course_overview) access_expiration = show_enrolled and get_access_expiration_data(request.user, course_overview) - course_expired_html = show_enrolled and generate_course_expired_message(request.user, course_overview) welcome_message_html = show_enrolled and get_current_update_for_user(request, course) @@ -259,7 +256,6 @@ class OutlineTabView(RetrieveAPIView): data = { 'access_expiration': access_expiration or None, 'course_blocks': course_blocks, - 'course_expired_html': course_expired_html or None, 'course_goals': course_goals, 'course_tools': course_tools, 'dates_widget': dates_widget, @@ -267,7 +263,6 @@ class OutlineTabView(RetrieveAPIView): 'handouts_html': handouts_html or None, 'has_ended': course.has_ended(), 'offer': offer_data or None, - 'offer_html': offer_html or None, 'resume_course': resume_course, 'welcome_message_html': welcome_message_html or None, } diff --git a/openedx/core/djangoapps/courseware_api/serializers.py b/openedx/core/djangoapps/courseware_api/serializers.py index 04c7afc15a698658a33c69f3a5e8c61a134ef3a2..26786478f33cb08eeb523c0453c455c74df2e7a0 100644 --- a/openedx/core/djangoapps/courseware_api/serializers.py +++ b/openedx/core/djangoapps/courseware_api/serializers.py @@ -81,7 +81,6 @@ class CourseInfoSerializer(serializers.Serializer): # pylint: disable=abstract- access_expiration = serializers.DictField() can_show_upgrade_sock = serializers.BooleanField() content_type_gating_enabled = serializers.BooleanField() - course_expired_message = serializers.CharField() effort = serializers.CharField() end = serializers.DateTimeField() enrollment = serializers.DictField() @@ -93,7 +92,6 @@ class CourseInfoSerializer(serializers.Serializer): # pylint: disable=abstract- name = serializers.CharField(source='display_name_with_default_escaped') number = serializers.CharField(source='display_number_with_default') offer = serializers.DictField() - offer_html = serializers.CharField() org = serializers.CharField(source='display_org_with_default') related_programs = CourseProgramSerializer(many=True) short_description = serializers.CharField() diff --git a/openedx/core/djangoapps/courseware_api/views.py b/openedx/core/djangoapps/courseware_api/views.py index 8e71fa7158970ed1f41fc91b38b390e1e9bdd828..5e12e1f9c61059c1479623336814c0f37d5af5bc 100644 --- a/openedx/core/djangoapps/courseware_api/views.py +++ b/openedx/core/djangoapps/courseware_api/views.py @@ -40,8 +40,8 @@ from openedx.core.lib.api.view_utils import DeveloperErrorViewMixin from openedx.core.djangoapps.programs.utils import ProgramProgressMeter from openedx.features.course_experience import DISPLAY_COURSE_SOCK_FLAG from openedx.features.content_type_gating.models import ContentTypeGatingConfig -from openedx.features.course_duration_limits.access import generate_course_expired_message, get_access_expiration_data -from openedx.features.discounts.utils import generate_offer_data, generate_offer_html +from openedx.features.course_duration_limits.access import get_access_expiration_data +from openedx.features.discounts.utils import generate_offer_data from common.djangoapps.student.models import ( CourseEnrollment, CourseEnrollmentCelebration, LinkedInAddToProfileConfiguration ) @@ -123,20 +123,10 @@ class CoursewareMeta: def access_expiration(self): return get_access_expiration_data(self.effective_user, self.overview) - @property - def course_expired_message(self): - # TODO: TNL-7185 Legacy: Refactor to return the expiration date and format the message in the MFE - return generate_course_expired_message(self.effective_user, self.overview) - @property def offer(self): return generate_offer_data(self.effective_user, self.overview) - @property - def offer_html(self): - # TODO: TNL-7185 Legacy: Refactor to return the offer data and format the message in the MFE - return generate_offer_html(self.effective_user, self.overview) - @property def content_type_gating_enabled(self): return ContentTypeGatingConfig.enabled_for_enrollment(