Commit f2ad580e by Matthew Piatetsky

Include hidden course runs

LEARNER-834
parent 40439efd
...@@ -59,6 +59,29 @@ class CourseViewSetTests(SerializationMixin, APITestCase): ...@@ -59,6 +59,29 @@ class CourseViewSetTests(SerializationMixin, APITestCase):
self.serialize_course(self.course, extra_context={'include_deleted_programs': True}) self.serialize_course(self.course, extra_context={'include_deleted_programs': True})
) )
def test_get_include_hidden_course_runs(self):
"""
Verify the endpoint returns associated hidden course runs
with the 'include_hidden_course_runs' flag set to True
"""
CourseRunFactory(
status=CourseRunStatus.Published,
end=datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=10),
enrollment_start=None,
enrollment_end=None,
hidden=True,
course=self.course
)
url = reverse('api:v1:course-detail', kwargs={'key': self.course.key})
url += '?include_hidden_course_runs=1'
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertEqual(
response.data,
self.serialize_course(self.course)
)
@ddt.data(1, 0) @ddt.data(1, 0)
def test_marketable_course_runs_only(self, marketable_course_runs_only): def test_marketable_course_runs_only(self, marketable_course_runs_only):
""" """
......
...@@ -33,7 +33,10 @@ class CourseViewSet(viewsets.ReadOnlyModelViewSet): ...@@ -33,7 +33,10 @@ class CourseViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Course.search(q) queryset = Course.search(q)
queryset = self.get_serializer_class().prefetch_queryset(queryset=queryset) queryset = self.get_serializer_class().prefetch_queryset(queryset=queryset)
else: else:
course_runs = CourseRun.objects.exclude(hidden=True) if get_query_param(self.request, 'include_hidden_course_runs'):
course_runs = CourseRun.objects.all()
else:
course_runs = CourseRun.objects.exclude(hidden=True)
if get_query_param(self.request, 'marketable_course_runs_only'): if get_query_param(self.request, 'marketable_course_runs_only'):
course_runs = course_runs.marketable().active() course_runs = course_runs.marketable().active()
...@@ -82,6 +85,12 @@ class CourseViewSet(viewsets.ReadOnlyModelViewSet): ...@@ -82,6 +85,12 @@ class CourseViewSet(viewsets.ReadOnlyModelViewSet):
type: string type: string
paramType: query paramType: query
multiple: false multiple: false
- name: include_hidden_course_runs
description: Include course runs that are hidden in the response.
required: false
type: integer
paramType: query
mulitple: false
- name: marketable_course_runs_only - name: marketable_course_runs_only
description: Restrict returned course runs to those that are published, have seats, description: Restrict returned course runs to those that are published, have seats,
and are enrollable or will be enrollable in the future and are enrollable or will be enrollable in the future
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment