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
5a6cbf5f
Commit
5a6cbf5f
authored
Aug 08, 2016
by
Michael Frey
Committed by
GitHub
Aug 08, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #221 from edx/mjfrey/partner-short-code
Index partner short_code rather than name
parents
8737df79
1b83624e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
12 additions
and
14 deletions
+12
-14
course_discovery/apps/api/v1/tests/test_views/test_course_runs.py
+1
-1
course_discovery/apps/api/v1/views.py
+8
-10
course_discovery/apps/course_metadata/search_indexes.py
+3
-3
No files found.
course_discovery/apps/api/v1/tests/test_views/test_course_runs.py
View file @
5a6cbf5f
...
@@ -72,7 +72,7 @@ class CourseRunViewSetTests(ElasticsearchTestMixin, APITestCase):
...
@@ -72,7 +72,7 @@ class CourseRunViewSetTests(ElasticsearchTestMixin, APITestCase):
def
test_list_key_filter
(
self
):
def
test_list_key_filter
(
self
):
""" Verify the endpoint returns a list of course runs filtered by the specified keys. """
""" Verify the endpoint returns a list of course runs filtered by the specified keys. """
course_runs
=
CourseRunFactory
.
create_batch
(
3
)
course_runs
=
CourseRunFactory
.
create_batch
(
3
,
course__partner
=
self
.
default_partner
)
course_runs
=
sorted
(
course_runs
,
key
=
lambda
course
:
course
.
key
.
lower
())
course_runs
=
sorted
(
course_runs
,
key
=
lambda
course
:
course
.
key
.
lower
())
keys
=
','
.
join
([
course
.
key
for
course
in
course_runs
])
keys
=
','
.
join
([
course
.
key
for
course
in
course_runs
])
url
=
'{root}?keys={keys}'
.
format
(
root
=
reverse
(
'api:v1:course_run-list'
),
keys
=
keys
)
url
=
'{root}?keys={keys}'
.
format
(
root
=
reverse
(
'api:v1:course_run-list'
),
keys
=
keys
)
...
...
course_discovery/apps/api/v1/views.py
View file @
5a6cbf5f
...
@@ -227,11 +227,9 @@ class CourseRunViewSet(viewsets.ReadOnlyModelViewSet):
...
@@ -227,11 +227,9 @@ class CourseRunViewSet(viewsets.ReadOnlyModelViewSet):
permission_classes
=
(
IsAuthenticated
,)
permission_classes
=
(
IsAuthenticated
,)
serializer_class
=
serializers
.
CourseRunSerializer
serializer_class
=
serializers
.
CourseRunSerializer
def
_get_partner_name_from_code
(
self
):
def
_get_partner
(
self
):
""" Return the partner name associated with a partner code or the default partner """
""" Return the partner for the code passed in or the default partner """
partner
=
None
partner_code
=
self
.
request
.
query_params
.
get
(
'partner'
)
partner_code
=
self
.
request
.
query_params
.
get
(
'partner'
)
if
partner_code
:
if
partner_code
:
try
:
try
:
partner
=
Partner
.
objects
.
get
(
short_code
=
partner_code
)
partner
=
Partner
.
objects
.
get
(
short_code
=
partner_code
)
...
@@ -240,19 +238,19 @@ class CourseRunViewSet(viewsets.ReadOnlyModelViewSet):
...
@@ -240,19 +238,19 @@ class CourseRunViewSet(viewsets.ReadOnlyModelViewSet):
else
:
else
:
partner
=
Partner
.
objects
.
get
(
id
=
settings
.
DEFAULT_PARTNER_ID
)
partner
=
Partner
.
objects
.
get
(
id
=
settings
.
DEFAULT_PARTNER_ID
)
return
partner
.
name
return
partner
def
get_queryset
(
self
):
def
get_queryset
(
self
):
q
=
self
.
request
.
query_params
.
get
(
'q'
,
None
)
q
=
self
.
request
.
query_params
.
get
(
'q'
,
None
)
partner
_name
=
self
.
_get_partner_name_from_code
()
partner
=
self
.
_get_partner
()
if
q
:
if
q
:
qs
=
SearchQuerySetWrapper
(
CourseRun
.
search
(
q
)
.
filter
(
partner
=
partner
_nam
e
))
qs
=
SearchQuerySetWrapper
(
CourseRun
.
search
(
q
)
.
filter
(
partner
=
partner
.
short_cod
e
))
# This is necessary to avoid issues with the filter backend.
# This is necessary to avoid issues with the filter backend.
qs
.
model
=
self
.
queryset
.
model
qs
.
model
=
self
.
queryset
.
model
return
qs
return
qs
else
:
else
:
return
super
(
CourseRunViewSet
,
self
)
.
get_queryset
()
return
super
(
CourseRunViewSet
,
self
)
.
get_queryset
()
.
filter
(
course__partner
=
partner
)
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
""" List all courses runs.
""" List all courses runs.
...
@@ -314,11 +312,11 @@ class CourseRunViewSet(viewsets.ReadOnlyModelViewSet):
...
@@ -314,11 +312,11 @@ class CourseRunViewSet(viewsets.ReadOnlyModelViewSet):
"""
"""
query
=
request
.
GET
.
get
(
'query'
)
query
=
request
.
GET
.
get
(
'query'
)
course_run_ids
=
request
.
GET
.
get
(
'course_run_ids'
)
course_run_ids
=
request
.
GET
.
get
(
'course_run_ids'
)
partner
_name
=
self
.
_get_partner_name_from_code
()
partner
=
self
.
_get_partner
()
if
query
and
course_run_ids
:
if
query
and
course_run_ids
:
course_run_ids
=
course_run_ids
.
split
(
','
)
course_run_ids
=
course_run_ids
.
split
(
','
)
course_runs
=
CourseRun
.
search
(
query
)
.
filter
(
partner
=
partner
_nam
e
)
.
filter
(
key__in
=
course_run_ids
)
.
\
course_runs
=
CourseRun
.
search
(
query
)
.
filter
(
partner
=
partner
.
short_cod
e
)
.
filter
(
key__in
=
course_run_ids
)
.
\
values_list
(
'key'
,
flat
=
True
)
values_list
(
'key'
,
flat
=
True
)
contains
=
{
course_run_id
:
course_run_id
in
course_runs
for
course_run_id
in
course_run_ids
}
contains
=
{
course_run_id
:
course_run_id
in
course_runs
for
course_run_id
in
course_run_ids
}
...
...
course_discovery/apps/course_metadata/search_indexes.py
View file @
5a6cbf5f
...
@@ -40,7 +40,7 @@ class BaseCourseIndex(OrganizationsMixin, BaseIndex):
...
@@ -40,7 +40,7 @@ class BaseCourseIndex(OrganizationsMixin, BaseIndex):
subjects
=
indexes
.
MultiValueField
(
faceted
=
True
)
subjects
=
indexes
.
MultiValueField
(
faceted
=
True
)
organizations
=
indexes
.
MultiValueField
(
faceted
=
True
)
organizations
=
indexes
.
MultiValueField
(
faceted
=
True
)
level_type
=
indexes
.
CharField
(
model_attr
=
'level_type__name'
,
null
=
True
,
faceted
=
True
)
level_type
=
indexes
.
CharField
(
model_attr
=
'level_type__name'
,
null
=
True
,
faceted
=
True
)
partner
=
indexes
.
CharField
(
model_attr
=
'partner__
nam
e'
,
null
=
True
,
faceted
=
True
)
partner
=
indexes
.
CharField
(
model_attr
=
'partner__
short_cod
e'
,
null
=
True
,
faceted
=
True
)
def
prepare_subjects
(
self
,
obj
):
def
prepare_subjects
(
self
,
obj
):
return
[
subject
.
name
for
subject
in
obj
.
subjects
.
all
()]
return
[
subject
.
name
for
subject
in
obj
.
subjects
.
all
()]
...
@@ -84,7 +84,7 @@ class CourseRunIndex(BaseCourseIndex, indexes.Indexable):
...
@@ -84,7 +84,7 @@ class CourseRunIndex(BaseCourseIndex, indexes.Indexable):
seat_types
=
indexes
.
MultiValueField
(
model_attr
=
'seat_types'
,
null
=
True
,
faceted
=
True
)
seat_types
=
indexes
.
MultiValueField
(
model_attr
=
'seat_types'
,
null
=
True
,
faceted
=
True
)
type
=
indexes
.
CharField
(
model_attr
=
'type'
,
null
=
True
,
faceted
=
True
)
type
=
indexes
.
CharField
(
model_attr
=
'type'
,
null
=
True
,
faceted
=
True
)
image_url
=
indexes
.
CharField
(
model_attr
=
'image_url'
,
null
=
True
)
image_url
=
indexes
.
CharField
(
model_attr
=
'image_url'
,
null
=
True
)
partner
=
indexes
.
CharField
(
model_attr
=
'course__partner__
nam
e'
,
null
=
True
,
faceted
=
True
)
partner
=
indexes
.
CharField
(
model_attr
=
'course__partner__
short_cod
e'
,
null
=
True
,
faceted
=
True
)
def
_prepare_language
(
self
,
language
):
def
_prepare_language
(
self
,
language
):
return
language
.
macrolanguage
return
language
.
macrolanguage
...
@@ -119,7 +119,7 @@ class ProgramIndex(BaseIndex, indexes.Indexable, OrganizationsMixin):
...
@@ -119,7 +119,7 @@ class ProgramIndex(BaseIndex, indexes.Indexable, OrganizationsMixin):
credit_backing_organizations
=
indexes
.
MultiValueField
(
faceted
=
True
)
credit_backing_organizations
=
indexes
.
MultiValueField
(
faceted
=
True
)
card_image_url
=
indexes
.
CharField
(
model_attr
=
'card_image_url'
,
null
=
True
)
card_image_url
=
indexes
.
CharField
(
model_attr
=
'card_image_url'
,
null
=
True
)
status
=
indexes
.
CharField
(
model_attr
=
'status'
,
faceted
=
True
)
status
=
indexes
.
CharField
(
model_attr
=
'status'
,
faceted
=
True
)
partner
=
indexes
.
CharField
(
model_attr
=
'partner__
nam
e'
,
null
=
True
,
faceted
=
True
)
partner
=
indexes
.
CharField
(
model_attr
=
'partner__
short_cod
e'
,
null
=
True
,
faceted
=
True
)
def
prepare_organizations
(
self
,
obj
):
def
prepare_organizations
(
self
,
obj
):
return
self
.
prepare_authoring_organizations
(
obj
)
+
self
.
prepare_credit_backing_organizations
(
obj
)
return
self
.
prepare_authoring_organizations
(
obj
)
+
self
.
prepare_credit_backing_organizations
(
obj
)
...
...
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