update ticket serializer

This commit is contained in:
Parsa Nazer
2025-02-28 21:54:00 +03:30
parent abe907ee4e
commit 21bd4a2134
+12 -3
View File
@@ -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')
@@ -45,14 +50,17 @@ 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}')
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)
return ticket
else:
raise Exception(message_obj.errors)
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', )