def enroll(self, request, user, course_key): try: enroll(user, course_key, request, check_access=True) course_url = get_mktg_for_course(SUCCESS_ENROLL_PAGE, unicode(course_key)) return redirect(course_url) except AlreadyEnrolledError: course = modulestore().get_course(course_key) if course.has_started(): return redirect('course_root', unicode(course_key)) else: return redirect('dashboard') except InvalidCourseIdError: return forus_error_redirect(_("Invalid course id")) except Exception as e: log.exception(e) return forus_error_redirect(_("Could not enroll"))
def to_representation(self, course_overview): course_id = unicode(course_overview.id) request = self.context.get('request') return { # identifiers 'id': course_id, 'name': course_overview.display_name, 'number': course_overview.display_number_with_default, 'org': course_overview.display_org_with_default, # dates 'start': course_overview.start, 'start_display': course_overview.start_display, 'start_type': course_overview.start_type, 'end': course_overview.end, 'pacing': course_overview.pacing, # notification info 'subscription_id': course_overview.clean_id(padding_char='_'), # access info 'courseware_access': has_access(request.user, 'load_mobile', course_overview).to_json(), # various URLs # course_image is sent in both new and old formats # (within media to be compatible with the new Course API) 'media': { 'course_image': { 'uri': course_overview.course_image_url, 'name': 'Course Image', } }, 'course_image': course_overview.course_image_url, 'course_about': reverse( 'about_course', kwargs={'course_id': course_id}, request=request, ), 'course_info': get_mktg_for_course(COURSE_INFO_PAGE, course_id), 'course_updates': reverse( 'course-updates-list', kwargs={'course_id': course_id}, request=request, ), 'course_handouts': reverse( 'course-handouts-list', kwargs={'course_id': course_id}, request=request, ), 'discussion_url': reverse( 'discussion_course', kwargs={'course_id': course_id}, request=request, ) if course_overview.is_discussion_tab_enabled() else None, 'video_outline': reverse( 'video-summary-list', kwargs={'course_id': course_id}, request=request, ), # Note: The following should be deprecated. 'latest_updates': { 'video': None }, }
def to_representation(self, course_overview): course_id = unicode(course_overview.id) request = self.context.get('request') return { # identifiers 'id': course_id, 'name': course_overview.display_name, 'number': course_overview.display_number_with_default, 'org': course_overview.display_org_with_default, # dates 'start': course_overview.start, 'start_display': course_overview.start_display, 'start_type': course_overview.start_type, 'end': course_overview.end, 'pacing': course_overview.pacing, # notification info 'subscription_id': course_overview.clean_id(padding_char='_'), # access info 'courseware_access': has_access( request.user, 'load_mobile', course_overview ).to_json(), # various URLs # course_image is sent in both new and old formats # (within media to be compatible with the new Course API) 'media': { 'course_image': { 'uri': course_overview.course_image_url, 'name': 'Course Image', } }, 'course_image': course_overview.course_image_url, 'course_about': reverse( 'about_course', kwargs={'course_id': course_id}, request=request, ), 'course_info': get_mktg_for_course( COURSE_INFO_PAGE, course_id), 'course_updates': reverse( 'course-updates-list', kwargs={'course_id': course_id}, request=request, ), 'course_handouts': reverse( 'course-handouts-list', kwargs={'course_id': course_id}, request=request, ), 'discussion_url': reverse( 'discussion_course', kwargs={'course_id': course_id}, request=request, ) if course_overview.is_discussion_tab_enabled() else None, 'video_outline': reverse( 'video-summary-list', kwargs={'course_id': course_id}, request=request, ), # Note: The following should be deprecated. 'latest_updates': { 'video': None }, }