85 lines
2.7 KiB
Python
85 lines
2.7 KiB
Python
import re
|
|
|
|
from rest_framework import serializers
|
|
from accounts.models import IAmPrincipal
|
|
from goodtimes import constants
|
|
from manage_communications.models import ContactUs, Feedback, TicketIssueType, TicketAttachment, Tickets
|
|
from goodtimes import date_utils
|
|
|
|
class ContactUsSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ContactUs
|
|
# Alternatively, you can specify fields explicitly:
|
|
fields = ['name', 'email_address', 'mobile_number', 'subject', 'message']
|
|
|
|
class TicketIssueTypeSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = TicketIssueType
|
|
fields = ["id", "name"]
|
|
|
|
class TicketAttachmentSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = TicketAttachment
|
|
fields = ["image"]
|
|
|
|
# def get_image_url(self, obj, field_name, request):
|
|
# image_field = getattr(obj, field_name)
|
|
# if image_field:
|
|
# return request.build_absolute_uri(image_field.url)
|
|
# return ""
|
|
|
|
# def to_representation(self, instance):
|
|
# data = super().to_representation(instance)
|
|
# request = self.context.get("request")
|
|
# data["image"] = self.get_image_url(instance, "image", request)
|
|
# return data
|
|
|
|
class TicketStatusSerializer(serializers.Serializer):
|
|
ticket_status = serializers.ChoiceField(choices=Tickets.TICKET_STATUS)
|
|
|
|
class TicketsSerializer(serializers.ModelSerializer):
|
|
issuetype = serializers.PrimaryKeyRelatedField(queryset=TicketIssueType.objects.all())
|
|
attachments = TicketAttachmentSerializer(many=True, read_only=True)
|
|
created_on = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = Tickets
|
|
fields = [
|
|
"id",
|
|
"issuetype",
|
|
"principal",
|
|
"subject",
|
|
"description",
|
|
"ticket_status",
|
|
"attachments",
|
|
"is_stopped",
|
|
"created_on",
|
|
]
|
|
|
|
def get_created_on(self, obj):
|
|
return date_utils.format_date_to_string(obj.created_on)
|
|
|
|
class FeedbackSerializer(serializers.ModelSerializer):
|
|
RATING_CHOICES = Feedback.RATING_CHOICES
|
|
|
|
rating = serializers.ChoiceField(choices=RATING_CHOICES)
|
|
|
|
class Meta:
|
|
model = Feedback
|
|
fields = ['principal', 'email', 'comment', 'rating']
|
|
|
|
def get_feedback_reaction(self, obj):
|
|
rating = obj.rating
|
|
if rating == 1:
|
|
return Feedback.VERY_BAD
|
|
elif rating == 2:
|
|
return Feedback.POOR
|
|
elif rating == 3:
|
|
return Feedback.MEDIUM
|
|
elif rating == 4:
|
|
return Feedback.GOOD
|
|
elif rating == 5:
|
|
return Feedback.EXCELLENT
|
|
else:
|
|
return None
|