Skip to content

Commit

Permalink
perf: improve API performance
Browse files Browse the repository at this point in the history
  • Loading branch information
asadali145 committed Aug 21, 2024
1 parent 1ceb478 commit e61ed81
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 8 deletions.
6 changes: 2 additions & 4 deletions courses/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -525,10 +525,8 @@ def unexpired_runs(self):
sorted(
[
course_run
for course_run in self.courseruns.filter(
start_date__isnull=False
)
if course_run.live
for course_run in self.courseruns.all()
if course_run.live and course_run.start_date is not None
],
key=lambda course_run: course_run.start_date,
),
Expand Down
8 changes: 4 additions & 4 deletions courses/views/v1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class ProgramViewSet(viewsets.ReadOnlyModelViewSet):
courses_prefetch = Prefetch(
"courses",
Course.objects.select_related(
"coursepage", "externalcoursepage"
"coursepage", "externalcoursepage", "platform"
).prefetch_related(
course_runs_prefetch, "coursepage__topics", "externalcoursepage__topics"
),
Expand All @@ -51,7 +51,7 @@ class ProgramViewSet(viewsets.ReadOnlyModelViewSet):
queryset = (
Program.objects.filter(live=True)
.exclude(products=None)
.select_related("programpage", "externalprogrampage")
.select_related("programpage", "externalprogrampage", "platform")
.prefetch_related(courses_prefetch, products_prefetch)
.filter(Q(programpage__live=True) | Q(externalprogrampage__live=True))
)
Expand All @@ -71,7 +71,7 @@ class CourseViewSet(viewsets.ReadOnlyModelViewSet):
def get_queryset(self):
queryset = (
Course.objects.filter(live=True)
.select_related("coursepage", "externalcoursepage")
.select_related("coursepage", "externalcoursepage", "platform")
.prefetch_related(
"coursepage__topics",
"externalcoursepage__topics",
Expand Down Expand Up @@ -100,7 +100,7 @@ class CourseRunViewSet(viewsets.ReadOnlyModelViewSet):

serializer_class = CourseRunSerializer
queryset = CourseRun.objects.select_related(
"course", "course__coursepage"
"course", "course__coursepage", "course__externalcoursepage"
).prefetch_related(products_prefetch)


Expand Down

0 comments on commit e61ed81

Please sign in to comment.