diff --git a/helpdesk/query.py b/helpdesk/query.py index cfe24ba5..fa2b8a1a 100644 --- a/helpdesk/query.py +++ b/helpdesk/query.py @@ -71,6 +71,11 @@ DATATABLES_ORDER_COLUMN_CHOICES = Choices( ) +DATATABLES_COLUMN_NUM_LOOKUP = { + v:k for k, v in DATATABLES_ORDER_COLUMN_CHOICES +} + + def get_query_class(): from django.conf import settings @@ -162,13 +167,18 @@ class __Query__: to a Serializer called DatatablesTicketSerializer in serializers.py. """ objects = self.get() - order_by = "-created" draw = int(kwargs.get("draw", [0])[0]) length = int(kwargs.get("length", [25])[0]) start = int(kwargs.get("start", [0])[0]) search_value = kwargs.get("search[value]", [""])[0] - order_column = kwargs.get("order[0][column]", ["5"])[0] - order = kwargs.get("order[0][dir]", ["asc"])[0] + + sorting = self.params.get("sorting", "created") + default_order_col = DATATABLES_COLUMN_NUM_LOOKUP.get(sorting, "5") + sortreverse = self.params.get("sortreverse", None) + default_order = "desc" if sortreverse else "asc" + + order_column = kwargs.get("order[0][column]", [default_order_col])[0] + order = kwargs.get("order[0][dir]", [default_order])[0] order_column = DATATABLES_ORDER_COLUMN_CHOICES[order_column] # django orm '-' -> desc @@ -191,7 +201,7 @@ class __Query__: .values("last_followup") .distinct() ) - ).order_by(order_by) + ) total = queryset.count() diff --git a/helpdesk/templates/helpdesk/filters/sorting.html b/helpdesk/templates/helpdesk/filters/sorting.html index 9115b1ce..2661f65e 100644 --- a/helpdesk/templates/helpdesk/filters/sorting.html +++ b/helpdesk/templates/helpdesk/filters/sorting.html @@ -5,7 +5,7 @@