ticket update
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# Generated by Django 5.1.2 on 2025-02-26 17:42
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ticket', '0014_attachment_uploaded_by'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='ticket',
|
||||
name='attachments',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='ticket',
|
||||
name='content',
|
||||
),
|
||||
]
|
||||
@@ -37,7 +37,6 @@ class Ticket(models.Model):
|
||||
('other', 'سایر'),
|
||||
]
|
||||
subject = models.CharField(max_length=255, verbose_name='موضوع')
|
||||
content = models.TextField(verbose_name='جزيیات تیکت')
|
||||
ticket_category = models.CharField(max_length=30, verbose_name='دسته بندی تیکت', choices=CATEGORY_CHOICES)
|
||||
customer = models.ForeignKey(User, on_delete=models.CASCADE, related_name="tickets", verbose_name='کاربر')
|
||||
admin = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, related_name="assigned_tickets", verbose_name='ادمین')
|
||||
@@ -45,7 +44,6 @@ class Ticket(models.Model):
|
||||
created_at = jmodels.jDateTimeField(auto_now_add=True, verbose_name='ساخته شده در')
|
||||
updated_at = jmodels.jDateTimeField(auto_now=True, verbose_name='اپدیت شده در')
|
||||
order = models.ForeignKey(OrderModel ,blank=True, null=True, on_delete=models.SET_NULL)
|
||||
attachments = models.ManyToManyField(Attachment, related_name='tickets', blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.subject
|
||||
|
||||
@@ -3,29 +3,6 @@ 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()
|
||||
@@ -40,3 +17,41 @@ class AttachmentSerializer(serializers.ModelSerializer):
|
||||
if request is not None:
|
||||
return request.build_absolute_uri(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',)
|
||||
|
||||
|
||||
|
||||
+22
-8
@@ -40,16 +40,30 @@ class AttachmentUploadView(APIView):
|
||||
|
||||
|
||||
|
||||
class TicketCreateView(generics.CreateAPIView):
|
||||
queryset = Ticket.objects.all()
|
||||
# class TicketCreateView(generics.CreateAPIView):
|
||||
# queryset = Ticket.objects.all()
|
||||
# serializer_class = TicketSerializer
|
||||
# permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
# def perform_create(self, serializer):
|
||||
# message = serializer.validated_data.get('message')
|
||||
# ticket = serializer.validated_data.get('ticket')
|
||||
# serializer.save(customer=self.request.user)
|
||||
|
||||
|
||||
class TicketCreateView(APIView):
|
||||
serializer_class = TicketSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def perform_create(self, serializer):
|
||||
serializer.save(customer=self.request.user)
|
||||
|
||||
|
||||
|
||||
def post(self, request):
|
||||
new_ticket_ser = self.serializer_class(data=request.data)
|
||||
message = request.data.get('message', None)
|
||||
print(message)
|
||||
if new_ticket_ser.is_valid():
|
||||
new_ticket_ser.save(customer=request.user)
|
||||
return Response(new_ticket_ser.data, status=status.HTTP_201_CREATED)
|
||||
else:
|
||||
print(new_ticket_ser.error_messages)
|
||||
return Response(new_ticket_ser.errors)
|
||||
class TicketListView(APIView):
|
||||
serializer_class = TicketListSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
Reference in New Issue
Block a user