ticket update

This commit is contained in:
Parsa Nazer
2025-02-26 22:46:06 +03:30
parent 36c6b0129f
commit c4bc2267fc
4 changed files with 83 additions and 35 deletions
+40 -25
View File
@@ -3,40 +3,55 @@ from .models import Ticket, Message, Attachment
from django.utils.timezone import localtime
from account.serializers import ProfileSerializer
class MessageSerializer(serializers.ModelSerializer):
class Meta:
model = Message
fields = '__all__'
class TicketSerializer(serializers.ModelSerializer):
messages = MessageSerializer(many=True, read_only=True)
admin = ProfileSerializer(read_only=True)
class Meta:
model = Ticket
exclude = ('customer', )
read_only_fields = ('status', 'admin', )
class TicketListSerializer(serializers.ModelSerializer):
class Meta:
model = Ticket
exclude = ('customer', 'admin', 'order', 'content')
read_only_fields = ('status',)
class AttachmentSerializer(serializers.ModelSerializer):
file = serializers.FileField(write_only=True)
link = serializers.SerializerMethodField()
class Meta:
model = Attachment
fields = ['id', 'name', 'file','link' , 'created_at', 'size']
fields = ['id', 'name', 'file', 'link' , 'created_at', 'size']
read_only_fields = ('size', 'name', )
def get_link(self, obj):
request = self.context.get('request')
if request is not None:
return request.build_absolute_uri(obj.file.url)
return obj.file.url
return obj.file.url
class MessageSerializer(serializers.ModelSerializer):
class Meta:
model = Message
exclude = ('sender', )
extra_kwargs = {'ticket': {'write_only': True}}
class MessageForTicketSerializer(serializers.ModelSerializer):
class Meta:
model = Message
exclude = ('sender', 'ticket')
class TicketSerializer(serializers.ModelSerializer):
messages = MessageSerializer(many=True, read_only=True)
message = MessageForTicketSerializer(write_only=True)
class Meta:
model = Ticket
exclude = ('customer', 'admin')
read_only_fields = ('status',)
def create(self, validated_data):
message = validated_data.pop('message', None)
ticket = super().create(validated_data)
print(f'fck this shit{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('bullshit data for message')
class TicketListSerializer(serializers.ModelSerializer):
class Meta:
model = Ticket
exclude = ('customer', 'admin', )
read_only_fields = ('status',)