diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 02d9ca587b268f5b9b2b5747796621cf6a44270a..d1417970f752799fbd12819df257b31421c9dc21 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -246,23 +246,25 @@ def get_course_enrollment_pairs(user, course_org_filter, org_filter_out_set): a student's dashboard. """ for enrollment in CourseEnrollment.enrollments_for_user(user): - course = modulestore().get_course(enrollment.course_id) - if course and not isinstance(course, ErrorDescriptor): - - # if we are in a Microsite, then filter out anything that is not - # attributed (by ORG) to that Microsite - if course_org_filter and course_org_filter != course.location.org: - continue - # Conversely, if we are not in a Microsite, then let's filter out any enrollments - # with courses attributed (by ORG) to Microsites - elif course.location.org in org_filter_out_set: - continue - - yield (course, enrollment) - else: - log.error("User {0} enrolled in {2} course {1}".format( - user.username, enrollment.course_id, "broken" if course else "non-existent" - )) + store = modulestore() + with store.bulk_operations(enrollment.course_id): + course = store.get_course(enrollment.course_id) + if course and not isinstance(course, ErrorDescriptor): + + # if we are in a Microsite, then filter out anything that is not + # attributed (by ORG) to that Microsite + if course_org_filter and course_org_filter != course.location.org: + continue + # Conversely, if we are not in a Microsite, then let's filter out any enrollments + # with courses attributed (by ORG) to Microsites + elif course.location.org in org_filter_out_set: + continue + + yield (course, enrollment) + else: + log.error("User {0} enrolled in {2} course {1}".format( + user.username, enrollment.course_id, "broken" if course else "non-existent" + )) def _cert_info(user, course, cert_status): diff --git a/lms/djangoapps/courseware/views.py b/lms/djangoapps/courseware/views.py index 18013af6dc142fdfc6c75d010545156d58ed9950..f92326690a87afca5e91f5ca4ec88d15923e3915 100644 --- a/lms/djangoapps/courseware/views.py +++ b/lms/djangoapps/courseware/views.py @@ -559,41 +559,42 @@ def course_info(request, course_id): course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) - course = get_course_with_access(request.user, 'load', course_key) - staff_access = has_access(request.user, 'staff', course) - masq = setup_masquerade(request, staff_access) # allow staff to toggle masquerade on info page - reverifications = fetch_reverify_banner_info(request, course_key) - studio_url = get_studio_url(course, 'course_info') + with modulestore().bulk_operations(course_key): + course = get_course_with_access(request.user, 'load', course_key) + staff_access = has_access(request.user, 'staff', course) + masq = setup_masquerade(request, staff_access) # allow staff to toggle masquerade on info page + reverifications = fetch_reverify_banner_info(request, course_key) + studio_url = get_studio_url(course, 'course_info') - # link to where the student should go to enroll in the course: - # about page if there is not marketing site, SITE_NAME if there is - url_to_enroll = reverse(course_about, args=[course_id]) - if settings.FEATURES.get('ENABLE_MKTG_SITE'): - url_to_enroll = marketing_link('COURSES') + # link to where the student should go to enroll in the course: + # about page if there is not marketing site, SITE_NAME if there is + url_to_enroll = reverse(course_about, args=[course_id]) + if settings.FEATURES.get('ENABLE_MKTG_SITE'): + url_to_enroll = marketing_link('COURSES') - show_enroll_banner = request.user.is_authenticated() and not CourseEnrollment.is_enrolled(request.user, course.id) + show_enroll_banner = request.user.is_authenticated() and not CourseEnrollment.is_enrolled(request.user, course.id) - context = { - 'request': request, - 'course_id': course_key.to_deprecated_string(), - 'cache': None, - 'course': course, - 'staff_access': staff_access, - 'masquerade': masq, - 'studio_url': studio_url, - 'reverifications': reverifications, - 'show_enroll_banner': show_enroll_banner, - 'url_to_enroll': url_to_enroll, - } + context = { + 'request': request, + 'course_id': course_key.to_deprecated_string(), + 'cache': None, + 'course': course, + 'staff_access': staff_access, + 'masquerade': masq, + 'studio_url': studio_url, + 'reverifications': reverifications, + 'show_enroll_banner': show_enroll_banner, + 'url_to_enroll': url_to_enroll, + } - now = datetime.now(UTC()) - effective_start = _adjust_start_date_for_beta_testers(request.user, course, course_key) - if staff_access and now < effective_start: - # Disable student view button if user is staff and - # course is not yet visible to students. - context['disable_student_access'] = True + now = datetime.now(UTC()) + effective_start = _adjust_start_date_for_beta_testers(request.user, course, course_key) + if staff_access and now < effective_start: + # Disable student view button if user is staff and + # course is not yet visible to students. + context['disable_student_access'] = True - return render_to_response('courseware/info.html', context) + return render_to_response('courseware/info.html', context) @ensure_csrf_cookie