diff --git a/cms/djangoapps/contentstore/rest_api/v1/serializers/course_index.py b/cms/djangoapps/contentstore/rest_api/v1/serializers/course_index.py index 29577d9a75..27b7ed8576 100644 --- a/cms/djangoapps/contentstore/rest_api/v1/serializers/course_index.py +++ b/cms/djangoapps/contentstore/rest_api/v1/serializers/course_index.py @@ -32,3 +32,4 @@ class CourseIndexSerializer(serializers.Serializer): rerun_notification_id = serializers.IntegerField() advance_settings_url = serializers.CharField() is_custom_relative_dates_active = serializers.BooleanField() + created_on = serializers.DateTimeField() diff --git a/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_index.py b/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_index.py index 0e71eeb919..310d0ba80a 100644 --- a/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_index.py +++ b/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_index.py @@ -90,6 +90,7 @@ class CourseIndexViewTest(CourseTestCase, PermissionAccessMixin): 'discussion_configuration_url': f'{get_pages_and_resources_url(self.course.id)}/discussion/settings', }, "advance_settings_url": f"/settings/advanced/{self.course.id}", + 'created_on': None, } self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -140,6 +141,7 @@ class CourseIndexViewTest(CourseTestCase, PermissionAccessMixin): 'discussion_configuration_url': f'{get_pages_and_resources_url(self.course.id)}/discussion/settings', }, "advance_settings_url": f"/settings/advanced/{self.course.id}", + 'created_on': None, } self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -158,6 +160,6 @@ class CourseIndexViewTest(CourseTestCase, PermissionAccessMixin): """ Test to check number of queries made to mysql and mongo """ - with self.assertNumQueries(33, table_ignorelist=WAFFLE_TABLES): + with self.assertNumQueries(34, table_ignorelist=WAFFLE_TABLES): with check_mongo_calls(3): self.client.get(self.url) diff --git a/cms/djangoapps/contentstore/utils.py b/cms/djangoapps/contentstore/utils.py index 1ad400f3a5..d28ee4a44d 100644 --- a/cms/djangoapps/contentstore/utils.py +++ b/cms/djangoapps/contentstore/utils.py @@ -88,6 +88,7 @@ from common.djangoapps.xblock_django.api import deprecated_xblocks from common.djangoapps.xblock_django.user_service import DjangoXBlockUserService from openedx.core import toggles as core_toggles from openedx.core.djangoapps.content_libraries.api import get_container +from openedx.core.djangoapps.content.course_overviews.models import CourseOverview from openedx.core.djangoapps.content_tagging.toggles import is_tagging_feature_disabled from openedx.core.djangoapps.credit.api import get_credit_requirements, is_credit_course from openedx.core.djangoapps.discussions.config.waffle import ENABLE_PAGES_AND_RESOURCES_MICROFRONTEND @@ -1930,7 +1931,10 @@ def _get_course_index_context(request, course_key, course_block): course_block.discussions_settings['discussion_configuration_url'] = ( f'{get_pages_and_resources_url(course_block.id)}/discussion/settings' ) - + try: + course_overview = CourseOverview.objects.get(id=course_block.id) + except CourseOverview.DoesNotExist: + course_overview = None course_index_context = { 'language_code': request.LANGUAGE_CODE, 'context_course': course_block, @@ -1957,8 +1961,8 @@ def _get_course_index_context(request, course_key, course_block): 'advance_settings_url': reverse_course_url('advanced_settings_handler', course_block.id), 'proctoring_errors': proctoring_errors, 'taxonomy_tags_widget_url': get_taxonomy_tags_widget_url(course_block.id), + 'created_on': course_overview.created if course_overview else None, } - return course_index_context diff --git a/cms/djangoapps/contentstore/views/tests/test_course_index.py b/cms/djangoapps/contentstore/views/tests/test_course_index.py index 4db00a63fd..a22ce637fe 100644 --- a/cms/djangoapps/contentstore/views/tests/test_course_index.py +++ b/cms/djangoapps/contentstore/views/tests/test_course_index.py @@ -715,7 +715,7 @@ class TestCourseOutline(CourseTestCase): """ Test to check number of queries made to mysql and mongo """ - with self.assertNumQueries(38, table_ignorelist=WAFFLE_TABLES): + with self.assertNumQueries(39, table_ignorelist=WAFFLE_TABLES): with check_mongo_calls(3): self.client.get_html(reverse_course_url('course_handler', self.course.id))