Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: speed up course contents page #1420

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 19 additions & 2 deletions cms/djangoapps/contentstore/views/course.py
Original file line number Diff line number Diff line change
Expand Up @@ -708,7 +708,7 @@ def get_courses_accessible_to_user(request, org=None):
return courses, in_process_course_actions


def _process_courses_list(courses_iter, in_process_course_actions, split_archived=False):
def _process_courses_list(courses_iter, in_process_course_actions, split_archived=False, ignore_archived=False):
"""
Iterates over the list of courses to be displayed to the user, and:

Expand Down Expand Up @@ -738,6 +738,23 @@ def format_course_for_view(course):
archived_courses = []

for course in courses_iter:
# BEGIN temp fix for Sounds Write

# TODO: if a user has tons of courses like Sounds Write (571), some pages will time out.
# This is a temporary patch to prevent Sounds-Write requets timing out. The right fix
# is to optimize the DB queries.


# This skipping step can be potentially kept since it's just used for the "prerequisite" course list
# where we do not need to list archived courses.
if course.has_ended() and ignore_archived:
continue

if course.has_ended() and course.location.org == "sounds-write":
continue

# END temp fix for Sounds Write

if isinstance(course, ErrorDescriptor) or (course.id in in_process_action_course_keys):
continue

Expand Down Expand Up @@ -1118,7 +1135,7 @@ def settings_handler(request, course_key_string):
# exclude current course from the list of available courses
courses = (course for course in courses if course.id != course_key)
if courses:
courses, __ = _process_courses_list(courses, in_process_course_actions)
courses, __ = _process_courses_list(courses, in_process_course_actions, ignore_archived=True)
settings_context.update({'possible_pre_requisite_courses': list(courses)})

if credit_eligibility_enabled:
Expand Down
Loading