diff --git a/helpdesk/query.py b/helpdesk/query.py index d186d147..914a92e2 100644 --- a/helpdesk/query.py +++ b/helpdesk/query.py @@ -4,6 +4,7 @@ from django.db.models import Q from django.urls import reverse from django.utils.html import escape from django.utils.translation import gettext as _ +from django.db.models import Max from helpdesk.serializers import DatatablesTicketSerializer import json from model_utils import Choices @@ -170,13 +171,14 @@ class __Query__: search_value = kwargs.get('search[value]', [""])[0] order_column = kwargs.get('order[0][column]', ['5'])[0] order = kwargs.get('order[0][dir]', ["asc"])[0] - + order_column = DATATABLES_ORDER_COLUMN_CHOICES[order_column] # django orm '-' -> desc if order == 'desc': order_column = '-' + order_column queryset = objects.all().order_by(order_by) + queryset = queryset.annotate(last_followup=Max('followup__date')) total = queryset.count() if search_value: # Dead code currently diff --git a/helpdesk/serializers.py b/helpdesk/serializers.py index 8d899454..42453ba2 100644 --- a/helpdesk/serializers.py +++ b/helpdesk/serializers.py @@ -1,6 +1,7 @@ from django.contrib.auth import get_user_model from django.contrib.humanize.templatetags import humanize from django.utils.timezone import localtime +from django.core.exceptions import ObjectDoesNotExist from rest_framework import serializers from rest_framework.exceptions import ValidationError @@ -74,8 +75,13 @@ class DatatablesTicketSerializer(serializers.ModelSerializer): return obj.kbitem.title if obj.kbitem else "" def get_last_followup(self, obj): - followup = obj.followup_set.latest('date') - return localtime(followup.date).strftime('%Y-%m-%d %H:%M:%S') if followup else "" + try: + followup = obj.followup_set.latest('date') + followup = obj.followup_set.latest('date') + return localtime(followup.date).strftime('%Y-%m-%d %H:%M:%S') if followup else "" + except ObjectDoesNotExist: + return None # Return None or an empty string if no follow-ups exist + class FollowUpAttachmentSerializer(serializers.ModelSerializer): class Meta: diff --git a/helpdesk/views/staff.py b/helpdesk/views/staff.py index 04babdda..4cf47c92 100644 --- a/helpdesk/views/staff.py +++ b/helpdesk/views/staff.py @@ -1168,7 +1168,6 @@ def datatables_ticket_list(request, query): """ query = Query(HelpdeskUser(request.user), base64query=query) result = query.get_datatables_context(**request.query_params) - print(result) return JsonResponse(result, status=status.HTTP_200_OK)