diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py index a8945e857b..f0a797d0e4 100644 --- a/lms/djangoapps/courseware/views/views.py +++ b/lms/djangoapps/courseware/views/views.py @@ -35,6 +35,7 @@ import shoppingcart import survey.utils import survey.views from certificates import api as certs_api +from openedx.core.djangoapps.models.course_details import CourseDetails from commerce.utils import EcommerceService from course_modes.models import CourseMode from courseware import grades @@ -464,6 +465,7 @@ def course_about(request, course_id): 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 theming_helpers.get_value('ENABLE_MKTG_SITE', settings.FEATURES.get('ENABLE_MKTG_SITE', False)): @@ -543,6 +545,7 @@ def course_about(request, course_id): context = { 'course': course, + 'course_details': course_details, 'staff_access': staff_access, 'studio_url': studio_url, 'registered': registered, diff --git a/openedx/core/djangoapps/models/course_details.py b/openedx/core/djangoapps/models/course_details.py index 0db50a3803..6f0a2de250 100644 --- a/openedx/core/djangoapps/models/course_details.py +++ b/openedx/core/djangoapps/models/course_details.py @@ -94,27 +94,33 @@ class CourseDetails(object): Fetch the course details for the given course from persistence and return a CourseDetails model. """ - descriptor = modulestore().get_course(course_key) - course_details = cls(course_key.org, course_key.course, course_key.run) + return cls.populate(modulestore().get_course(course_key)) - course_details.start_date = descriptor.start - course_details.end_date = descriptor.end - course_details.enrollment_start = descriptor.enrollment_start - course_details.enrollment_end = descriptor.enrollment_end - course_details.pre_requisite_courses = descriptor.pre_requisite_courses - course_details.course_image_name = descriptor.course_image - course_details.course_image_asset_path = course_image_url(descriptor, 'course_image') - course_details.banner_image_name = descriptor.banner_image - course_details.banner_image_asset_path = course_image_url(descriptor, 'banner_image') - course_details.video_thumbnail_image_name = descriptor.video_thumbnail_image - course_details.video_thumbnail_image_asset_path = course_image_url(descriptor, 'video_thumbnail_image') - course_details.language = descriptor.language - course_details.self_paced = descriptor.self_paced - course_details.learning_info = descriptor.learning_info - course_details.instructor_info = descriptor.instructor_info + @classmethod + def populate(cls, course_descriptor): + """ + Returns a fully populated CourseDetails model given the course descriptor + """ + course_key = course_descriptor.id + course_details = cls(course_key.org, course_key.course, course_key.run) + course_details.start_date = course_descriptor.start + course_details.end_date = course_descriptor.end + course_details.enrollment_start = course_descriptor.enrollment_start + course_details.enrollment_end = course_descriptor.enrollment_end + course_details.pre_requisite_courses = course_descriptor.pre_requisite_courses + course_details.course_image_name = course_descriptor.course_image + course_details.course_image_asset_path = course_image_url(course_descriptor, 'course_image') + course_details.banner_image_name = course_descriptor.banner_image + course_details.banner_image_asset_path = course_image_url(course_descriptor, 'banner_image') + course_details.video_thumbnail_image_name = course_descriptor.video_thumbnail_image + course_details.video_thumbnail_image_asset_path = course_image_url(course_descriptor, 'video_thumbnail_image') + course_details.language = course_descriptor.language + course_details.self_paced = course_descriptor.self_paced + course_details.learning_info = course_descriptor.learning_info + course_details.instructor_info = course_descriptor.instructor_info # Default course license is "All Rights Reserved" - course_details.license = getattr(descriptor, "license", "all-rights-reserved") + course_details.license = getattr(course_descriptor, "license", "all-rights-reserved") course_details.intro_video = cls.fetch_youtube_video_id(course_key)