update ticket serializer
This commit is contained in:
@@ -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}')
|
||||
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)
|
||||
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', )
|
||||
|
||||
Reference in New Issue
Block a user