From dcd51adfd942659fe5bf6cd5fd5e7606f12d3dc0 Mon Sep 17 00:00:00 2001 From: Ezra Varady Date: Tue, 8 Jul 2025 09:50:23 -1000 Subject: [PATCH 1/2] add argument to get_datatable_context to allow custom sorting --- helpdesk/query.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/helpdesk/query.py b/helpdesk/query.py index f20f309c..e888961e 100644 --- a/helpdesk/query.py +++ b/helpdesk/query.py @@ -155,7 +155,7 @@ class __Query__: tickets = self.huser.get_tickets_in_queues().select_related() return self.__run__(tickets) - def get_datatables_context(self, **kwargs): + def get_datatables_context(self, *, column_lookup=None, **kwargs): """ This function takes in a list of ticket objects from the views and throws it to the datatables on ticket_list.html. If a search string was entered, this @@ -163,22 +163,29 @@ class __Query__: filtered list. The `draw`, `length` etc parameters are for datatables to display meta data on the table contents. The returning queryset is passed to a Serializer called DatatablesTicketSerializer in serializers.py. + Optionally, one can pass a dictionary in to override the default column + mapping for sorting """ objects = self.get() 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] + if column_lookup is None: + column_lookup = DATATABLES_ORDER_COLUMN_CHOICES + num_lookup = DATATABLES_COLUMN_NUM_LOOKUP + else: + num_lookup = {v:k for k, v in column_lookup} sorting = self.params.get("sorting", "created") - default_order_col = DATATABLES_COLUMN_NUM_LOOKUP.get(sorting, "5") + default_order_col = 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] + order_column = column_lookup[order_column] # django orm '-' -> desc if order == "desc": order_column = "-" + order_column From 17127db8695054fa961d02643553f0343f6e07b6 Mon Sep 17 00:00:00 2001 From: Ezra Varady Date: Mon, 14 Jul 2025 11:10:48 -1000 Subject: [PATCH 2/2] fix lint --- helpdesk/query.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helpdesk/query.py b/helpdesk/query.py index e888961e..67f460ab 100644 --- a/helpdesk/query.py +++ b/helpdesk/query.py @@ -175,7 +175,7 @@ class __Query__: column_lookup = DATATABLES_ORDER_COLUMN_CHOICES num_lookup = DATATABLES_COLUMN_NUM_LOOKUP else: - num_lookup = {v:k for k, v in column_lookup} + num_lookup = {v: k for k, v in column_lookup} sorting = self.params.get("sorting", "created") default_order_col = num_lookup.get(sorting, "5")