Commit a6dc243f by attiyaishaque Committed by Attiya Ishaque

EDUCATOR-1673 Fix sorting on edX status and Last Handoff column.

parent 98802f72
......@@ -1909,6 +1909,29 @@ class CourseListViewPaginationTests(PaginationMixin, TestCase):
assert course['course_team_status'] == ''
assert course['internal_user_status'] == ''
@ddt.data(
{'column': 6, 'direction': 'asc'},
{'column': 6, 'direction': 'desc'},
)
@ddt.unpack
def test_ordering_with_internal_user_status(self, column, direction):
"""
Verify that ordering by internal user status is working as expected.
"""
self.course_state = factories.CourseStateFactory(owner_role=PublisherUserRole.CourseTeam)
self.course_state.marketing_reviewed = True
self.course_state.save()
for page in (1, 2, 3):
courses = self.get_courses(
query_params={'sortColumn': column, 'sortDirection': direction, 'pageSize': 4, 'page': page}
)
internal_users_statuses = [course['internal_user_status'] for course in courses]
self.assertEqual(sorted(internal_users_statuses,
reverse=self.sort_directions[direction]),
internal_users_statuses)
class CourseDetailViewTests(TestCase):
""" Tests for the course detail view. """
......
......@@ -865,6 +865,7 @@ class CourseListView(mixins.LoginRequiredMixin, ListView):
3: 'course_runs_count',
4: 'course_state__owner_role_modified',
5: 'course_state__owner_role_modified',
7: 'course_state__owner_role_modified',
}
try:
......@@ -887,6 +888,26 @@ class CourseListView(mixins.LoginRequiredMixin, ListView):
return queryset
def sort_internal_user_status(self, query_set, context):
"""
Ordering by internal user status
Args:
query_set:
context:
"""
ordering_field_index = int(self.request.GET.get('sortColumn', 0))
ordering_direction = self.request.GET.get('sortDirection', 'asc')
if ordering_field_index == 6:
course_states = [CourseState.ApprovedByMarketing,
CourseState.AwaitingMarketingReview,
CourseState.NotAvailable]
if ordering_direction == 'asc':
context['object_list'] = sorted(query_set, key=lambda state: course_states.index(
str(state.course_state.internal_user_status)))
else:
context['object_list'] = sorted(query_set, key=lambda state: course_states.index(
str(state.course_state.internal_user_status)), reverse=True)
def filter_queryset(self, queryset):
filter_text = self.request.GET.get('searchText', '').strip()
......@@ -984,6 +1005,7 @@ class CourseListView(mixins.LoginRequiredMixin, ListView):
self.object_list = self.get_queryset()
context = self.get_context_data()
context['publisher_total_courses_count'] = self.object_list.count()
self.sort_internal_user_status(self.object_list, context)
courses = serializers.CourseSerializer(
context['object_list'],
many=True,
......
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