def test_headers_col2_asc(self): """ If the second column is sorted asc, set it up to be sorted desc. """ request = Mock(GET=QueryDict('ot=asc&o=1')) sort_headers = SortHeaders(request, self.header_list) headers = list(sort_headers.headers()) eq_( headers[0], { 'url': '&ot=asc&o=0', 'text': 'Title 1', 'class_attr': { 'class': 'orderable' }, 'sortable': True }) eq_( headers[1], { 'url': '&ot=desc&o=1', 'text': 'Title 2', 'class_attr': { 'class': 'orderable sorted asc' }, 'sortable': True })
def test_headers_default(self): """ If no related query params exist, the first column is sorted ascending. """ request = Mock(GET=QueryDict('')) sort_headers = SortHeaders(request, self.header_list) headers = list(sort_headers.headers()) eq_( headers[0], { 'url': '&ot=desc&o=0', 'text': 'Title 1', 'class_attr': { 'class': 'orderable sorted asc' }, 'sortable': True }) eq_( headers[1], { 'url': '&ot=asc&o=1', 'text': 'Title 2', 'class_attr': { 'class': 'orderable' }, 'sortable': True })
def test_get_order_by_default(self): """ Default order by is first field ascending. """ request = Mock(GET=QueryDict('')) sort_headers = SortHeaders(request, self.header_list) eq_(sort_headers.get_order_by(), 'field_1')
def test_get_order_by_col2_asc(self): """ If second field ascending is selected, return second field name without a minus sign. """ request = Mock(GET=QueryDict('ot=asc&o=1')) sort_headers = SortHeaders(request, self.header_list) eq_(sort_headers.get_order_by(), 'field_2')
def test_get_order_by_col1_desc(self): """ If first field descending is selected, return first field name with a minus sign. """ request = Mock(GET=QueryDict('ot=desc&o=0')) sort_headers = SortHeaders(request, self.header_list) eq_(sort_headers.get_order_by(), '-field_1')
def get_queryset(self): self.sort_headers = SortHeaders(self.request, self.list_headers) qs = TaskAttempt.objects.extra( select={ 'state_display': TaskAttempt.choice_display_extra_expression('state'), 'elapsed_time': 'EXTRACT(EPOCH FROM (tasks_taskattempt.modified - tasks_taskattempt.created))' }) return qs.order_by(self.sort_headers.get_order_by())
def get_queryset(self): self.sort_headers = SortHeaders(self.request, self.list_headers) qs = TaskAttempt.objects.extra( select={ 'state_display': TaskAttempt.choice_display_extra_expression('state'), 'elapsed_time': 'TIMESTAMPDIFF(SECOND, tasks_taskattempt.created, tasks_taskattempt.modified)' }) return qs.order_by(self.sort_headers.get_order_by())