From 948f652cf0ae3b52d48c8a1289521856744a910f Mon Sep 17 00:00:00 2001
From: Peter Fogg <pfogg@edx.org>
Date: Wed, 22 Jul 2015 09:53:47 -0400
Subject: [PATCH] Remove unnecessary DB call in team pagination.

---
 lms/djangoapps/teams/views.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lms/djangoapps/teams/views.py b/lms/djangoapps/teams/views.py
index c2efe1d87ec..f244a472bff 100644
--- a/lms/djangoapps/teams/views.py
+++ b/lms/djangoapps/teams/views.py
@@ -319,7 +319,14 @@ class TeamsListView(ExpandableFieldViewMixin, GenericAPIView):
 
         queryset = queryset.order_by(order_by_field)
 
-        page = self.paginate_queryset(queryset)
+        # TODO: Remove this on update to Django 1.8
+        # Use the cached length of the queryset in order to avoid
+        # making an extra database call to get the number of items in
+        # the collection
+        paginator = self.paginator_class(queryset, self.get_paginate_by())
+        paginator._count = len(queryset)  # pylint: disable=protected-access
+        page = paginator.page(int(request.QUERY_PARAMS.get('page', 1)))
+        # end TODO
         serializer = self.get_pagination_serializer(page)
         serializer.context.update({'sort_order': order_by_input})  # pylint: disable=maybe-no-member
         return Response(serializer.data)  # pylint: disable=maybe-no-member
-- 
GitLab