Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
course-discovery
Commits
2c235dbc
Commit
2c235dbc
authored
Sep 12, 2016
by
Clinton Blackburn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Pre-fetching data for course run API responses
ECOM-5559 and ECOM-5440
parent
c7140f5b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
4 deletions
+17
-4
course_discovery/apps/api/v1/tests/test_views/test_course_runs.py
+9
-3
course_discovery/apps/api/v1/views.py
+8
-1
No files found.
course_discovery/apps/api/v1/tests/test_views/test_course_runs.py
View file @
2c235dbc
...
@@ -35,7 +35,9 @@ class CourseRunViewSetTests(ElasticsearchTestMixin, APITestCase):
...
@@ -35,7 +35,9 @@ class CourseRunViewSetTests(ElasticsearchTestMixin, APITestCase):
""" Verify the endpoint returns the details for a single course. """
""" Verify the endpoint returns the details for a single course. """
url
=
reverse
(
'api:v1:course_run-detail'
,
kwargs
=
{
'key'
:
self
.
course_run
.
key
})
url
=
reverse
(
'api:v1:course_run-detail'
,
kwargs
=
{
'key'
:
self
.
course_run
.
key
})
response
=
self
.
client
.
get
(
url
)
with
self
.
assertNumQueries
(
9
):
response
=
self
.
client
.
get
(
url
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
,
self
.
serialize_course_run
(
self
.
course_run
))
self
.
assertEqual
(
response
.
data
,
self
.
serialize_course_run
(
self
.
course_run
))
...
@@ -43,7 +45,9 @@ class CourseRunViewSetTests(ElasticsearchTestMixin, APITestCase):
...
@@ -43,7 +45,9 @@ class CourseRunViewSetTests(ElasticsearchTestMixin, APITestCase):
""" Verify the endpoint returns a list of all catalogs. """
""" Verify the endpoint returns a list of all catalogs. """
url
=
reverse
(
'api:v1:course_run-list'
)
url
=
reverse
(
'api:v1:course_run-list'
)
response
=
self
.
client
.
get
(
url
)
with
self
.
assertNumQueries
(
11
):
response
=
self
.
client
.
get
(
url
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertListEqual
(
self
.
assertListEqual
(
response
.
data
[
'results'
],
response
.
data
[
'results'
],
...
@@ -57,7 +61,9 @@ class CourseRunViewSetTests(ElasticsearchTestMixin, APITestCase):
...
@@ -57,7 +61,9 @@ class CourseRunViewSetTests(ElasticsearchTestMixin, APITestCase):
query
=
'title:Some random title'
query
=
'title:Some random title'
url
=
'{root}?q={query}'
.
format
(
root
=
reverse
(
'api:v1:course_run-list'
),
query
=
query
)
url
=
'{root}?q={query}'
.
format
(
root
=
reverse
(
'api:v1:course_run-list'
),
query
=
query
)
response
=
self
.
client
.
get
(
url
)
with
self
.
assertNumQueries
(
37
):
response
=
self
.
client
.
get
(
url
)
actual_sorted
=
sorted
(
response
.
data
[
'results'
],
key
=
lambda
course_run
:
course_run
[
'key'
])
actual_sorted
=
sorted
(
response
.
data
[
'results'
],
key
=
lambda
course_run
:
course_run
[
'key'
])
expected_sorted
=
sorted
(
self
.
serialize_course_run
(
course_runs
,
many
=
True
),
expected_sorted
=
sorted
(
self
.
serialize_course_run
(
course_runs
,
many
=
True
),
key
=
lambda
course_run
:
course_run
[
'key'
])
key
=
lambda
course_run
:
course_run
[
'key'
])
...
...
course_discovery/apps/api/v1/views.py
View file @
2c235dbc
...
@@ -247,7 +247,14 @@ class CourseRunViewSet(viewsets.ReadOnlyModelViewSet):
...
@@ -247,7 +247,14 @@ class CourseRunViewSet(viewsets.ReadOnlyModelViewSet):
qs
.
model
=
self
.
queryset
.
model
qs
.
model
=
self
.
queryset
.
model
return
qs
return
qs
else
:
else
:
return
super
(
CourseRunViewSet
,
self
)
.
get_queryset
()
.
filter
(
course__partner
=
partner
)
queryset
=
super
(
CourseRunViewSet
,
self
)
.
get_queryset
()
.
filter
(
course__partner
=
partner
)
queryset
=
queryset
.
select_related
(
'course'
,
'language'
,
'video'
)
queryset
=
queryset
.
prefetch_related
(
'course__partner'
,
'course__level_type'
,
'course__programs'
,
'course__programs__type'
,
'course__programs__partner'
,
'seats'
,
'transcript_languages'
,
'seats__currency'
,
'staff'
,
'staff__position'
,
'staff__position__organization'
)
return
queryset
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
""" List all courses runs.
""" List all courses runs.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment