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
d5a47469
Commit
d5a47469
authored
Aug 16, 2016
by
Renzo Lucioni
Committed by
GitHub
Aug 16, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #248 from edx/renzo/program-type-filter
Allow programs to be filtered by type
parents
32b7fd14
b4835c40
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
25 additions
and
2 deletions
+25
-2
course_discovery/apps/api/filters.py
+9
-1
course_discovery/apps/api/v1/tests/test_views/test_programs.py
+14
-1
course_discovery/apps/api/v1/views.py
+2
-0
No files found.
course_discovery/apps/api/filters.py
View file @
d5a47469
...
@@ -8,7 +8,7 @@ from dry_rest_permissions.generics import DRYPermissionFiltersBase
...
@@ -8,7 +8,7 @@ from dry_rest_permissions.generics import DRYPermissionFiltersBase
from
guardian.shortcuts
import
get_objects_for_user
from
guardian.shortcuts
import
get_objects_for_user
from
rest_framework.exceptions
import
PermissionDenied
,
NotFound
from
rest_framework.exceptions
import
PermissionDenied
,
NotFound
from
course_discovery.apps.course_metadata.models
import
Course
,
CourseRun
from
course_discovery.apps.course_metadata.models
import
Course
,
CourseRun
,
Program
User
=
get_user_model
()
User
=
get_user_model
()
...
@@ -89,3 +89,11 @@ class CourseRunFilter(django_filters.FilterSet):
...
@@ -89,3 +89,11 @@ class CourseRunFilter(django_filters.FilterSet):
class
Meta
:
class
Meta
:
model
=
CourseRun
model
=
CourseRun
fields
=
[
'keys'
]
fields
=
[
'keys'
]
class
ProgramFilter
(
django_filters
.
FilterSet
):
type
=
django_filters
.
CharFilter
(
name
=
'type__name'
,
lookup_expr
=
'iexact'
)
class
Meta
:
model
=
Program
fields
=
[
'type'
]
course_discovery/apps/api/v1/tests/test_views/test_programs.py
View file @
d5a47469
...
@@ -4,7 +4,7 @@ from rest_framework.test import APITestCase
...
@@ -4,7 +4,7 @@ from rest_framework.test import APITestCase
from
course_discovery.apps.api.serializers
import
ProgramSerializer
from
course_discovery.apps.api.serializers
import
ProgramSerializer
from
course_discovery.apps.core.tests.factories
import
USER_PASSWORD
,
UserFactory
from
course_discovery.apps.core.tests.factories
import
USER_PASSWORD
,
UserFactory
from
course_discovery.apps.course_metadata.models
import
Program
from
course_discovery.apps.course_metadata.models
import
Program
from
course_discovery.apps.course_metadata.tests.factories
import
ProgramFactory
from
course_discovery.apps.course_metadata.tests.factories
import
ProgramFactory
,
ProgramTypeFactory
class
ProgramViewSetTests
(
APITestCase
):
class
ProgramViewSetTests
(
APITestCase
):
...
@@ -41,3 +41,16 @@ class ProgramViewSetTests(APITestCase):
...
@@ -41,3 +41,16 @@ class ProgramViewSetTests(APITestCase):
response
=
self
.
client
.
get
(
url
)
response
=
self
.
client
.
get
(
url
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
'results'
],
ProgramSerializer
(
Program
.
objects
.
all
(),
many
=
True
)
.
data
)
self
.
assertEqual
(
response
.
data
[
'results'
],
ProgramSerializer
(
Program
.
objects
.
all
(),
many
=
True
)
.
data
)
def
test_filter_by_type
(
self
):
""" Verify that the endpoint filters programs to those of a given type. """
url
=
reverse
(
'api:v1:program-list'
)
+
'?type='
self
.
program
.
type
=
ProgramTypeFactory
(
name
=
'Foo'
)
self
.
program
.
save
()
# pylint: disable=no-member
response
=
self
.
client
.
get
(
url
+
'foo'
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
],
ProgramSerializer
(
Program
.
objects
.
get
())
.
data
)
response
=
self
.
client
.
get
(
url
+
'bar'
)
self
.
assertEqual
(
response
.
data
[
'results'
],
[])
course_discovery/apps/api/v1/views.py
View file @
d5a47469
...
@@ -333,6 +333,8 @@ class ProgramViewSet(viewsets.ReadOnlyModelViewSet):
...
@@ -333,6 +333,8 @@ class ProgramViewSet(viewsets.ReadOnlyModelViewSet):
queryset
=
Program
.
objects
.
all
()
queryset
=
Program
.
objects
.
all
()
permission_classes
=
(
IsAuthenticated
,)
permission_classes
=
(
IsAuthenticated
,)
serializer_class
=
serializers
.
ProgramSerializer
serializer_class
=
serializers
.
ProgramSerializer
filter_backends
=
(
DjangoFilterBackend
,)
filter_class
=
filters
.
ProgramFilter
class
ManagementViewSet
(
viewsets
.
ViewSet
):
class
ManagementViewSet
(
viewsets
.
ViewSet
):
...
...
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