django-helpdeskmig/helpdesk/serializers.py

65 lines
2.0 KiB
Python
Raw Normal View History

from rest_framework import serializers
from .models import Ticket
2019-06-16 10:25:29 +02:00
from .lib import format_time_spent
from django.contrib.humanize.templatetags import humanize
"""
A serializer for the Ticket model, returns data in the format as required by
datatables for ticket_list.html. Called from staff.datatables_ticket_list.
"""
2018-10-15 19:56:54 +02:00
2019-10-11 12:41:06 +02:00
class DatatablesTicketSerializer(serializers.ModelSerializer):
ticket = serializers.SerializerMethodField()
assigned_to = serializers.SerializerMethodField()
2020-01-13 15:43:47 +01:00
submitter = serializers.SerializerMethodField()
created = serializers.SerializerMethodField()
due_date = serializers.SerializerMethodField()
status = serializers.SerializerMethodField()
row_class = serializers.SerializerMethodField()
time_spent = serializers.SerializerMethodField()
2019-03-10 12:09:10 +01:00
queue = serializers.SerializerMethodField()
class Meta:
model = Ticket
# fields = '__all__'
fields = ('ticket', 'id', 'priority', 'title', 'queue', 'status',
2020-01-13 15:43:47 +01:00
'created', 'due_date', 'assigned_to', 'submitter', 'row_class',
'time_spent')
2019-03-10 12:09:10 +01:00
def get_queue(self, obj):
return ({"title": obj.queue.title, "id": obj.queue.id})
def get_ticket(self, obj):
2018-10-15 19:56:54 +02:00
return (str(obj.id) + " " + obj.ticket)
def get_status(self, obj):
return (obj.get_status)
def get_created(self, obj):
return (humanize.naturaltime(obj.created))
def get_due_date(self, obj):
return (humanize.naturaltime(obj.due_date))
def get_assigned_to(self, obj):
if obj.assigned_to:
if obj.assigned_to.get_full_name():
return (obj.assigned_to.get_full_name())
else:
return (obj.assigned_to.email)
else:
return ("None")
2020-01-13 15:43:47 +01:00
def get_submitter(self, obj):
return obj.submitter_email
def get_time_spent(self, obj):
2019-06-16 10:25:29 +02:00
return format_time_spent(obj.time_spent)
def get_row_class(self, obj):
return (obj.get_priority_css_class)