diff --git a/backend/ticket/serializers.py b/backend/ticket/serializers.py index 812913f..63f07d2 100644 --- a/backend/ticket/serializers.py +++ b/backend/ticket/serializers.py @@ -2,6 +2,8 @@ from rest_framework import serializers from .models import Ticket, Message, Attachment from django.utils.timezone import localtime from account.serializers import ProfileSerializer +from order.serializers import OrderSerializer +from order.serializers import OrderModel class AttachmentSerializer(serializers.ModelSerializer): file = serializers.FileField(write_only=True) @@ -20,6 +22,7 @@ class AttachmentSerializer(serializers.ModelSerializer): class MessageSerializer(serializers.ModelSerializer): is_user = serializers.SerializerMethodField(read_only=True) + attachments = AttachmentSerializer(many=True) class Meta: model = Message exclude = ('sender', ) @@ -37,6 +40,8 @@ class TicketSerializer(serializers.ModelSerializer): ticket_category = serializers.SerializerMethodField() messages = MessageSerializer(many=True, read_only=True) message = MessageForTicketSerializer(write_only=True) + order_id = serializers.PrimaryKeyRelatedField(queryset=OrderModel.objects.all(), write_only=True, source='order') + order = OrderSerializer(read_only=True) class Meta: model = Ticket exclude = ('customer', 'admin') @@ -44,15 +49,18 @@ class TicketSerializer(serializers.ModelSerializer): def create(self, validated_data): message = validated_data.pop('message', None) - ticket = super().create(validated_data) - print(f'fck this shit id {ticket.pk}') - message['ticket'] = ticket.pk - message_obj = MessageSerializer(data=message) - if message_obj.is_valid(): - message_obj.save(sender=ticket.customer) - return ticket - else: - raise Exception(message_obj.errors) + ticket = super().create(validated_data) + if message: + message['ticket'] = ticket.pk + if 'attachments' in message: + message['attachments'] = [attachment.pk for attachment in message['attachments']] + message_obj = MessageSerializer(data=message) + if message_obj.is_valid(): + message_obj.save(sender=ticket.customer) + else: + raise Exception(f'error in create failed: {message_obj.errors}') + return ticket + def get_status(self, obj): return obj.get_status_display() @@ -62,6 +70,7 @@ class TicketSerializer(serializers.ModelSerializer): class TicketListSerializer(serializers.ModelSerializer): status = serializers.SerializerMethodField() ticket_category = serializers.SerializerMethodField() + order = OrderSerializer() class Meta: model = Ticket exclude = ('customer', 'admin', )