attachment delete route and added the attachment updaloed by fields
This commit is contained in:
@@ -59,3 +59,7 @@ class MessageAdmin(ModelAdmin, ImportExportModelAdmin):
|
||||
def content_display(self, obj):
|
||||
return obj.content[0:35] + '...'
|
||||
content_display.short_description = 'محتوای پیام'
|
||||
|
||||
@admin.register(Attachment)
|
||||
class AttachmentAdmin(ModelAdmin, ImportExportModelAdmin):
|
||||
list_display = ['name', 'uploaded_by']
|
||||
@@ -0,0 +1,21 @@
|
||||
# Generated by Django 5.1.2 on 2025-02-23 18:28
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ticket', '0013_attachment_message_attachments_ticket_attachments'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='attachment',
|
||||
name='uploaded_by',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
@@ -10,6 +10,7 @@ class Attachment(models.Model):
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
size = models.PositiveIntegerField(null=True, blank=True)
|
||||
name = models.CharField(max_length=400, null=True, blank=True)
|
||||
uploaded_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
|
||||
def __str__(self):
|
||||
return self.file.name
|
||||
|
||||
|
||||
+7
-13
@@ -1,17 +1,11 @@
|
||||
from django.urls import path
|
||||
from .views import (
|
||||
TicketCreateView,
|
||||
TicketListView,
|
||||
TicketDetailView,
|
||||
MessageCreateView,
|
||||
UpdateTicketStatusView,
|
||||
AttachmentUploadView
|
||||
)
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('create', TicketCreateView.as_view(), name='ticket-create'),
|
||||
path('', TicketListView.as_view(), name='ticket-list'),
|
||||
path('<int:pk>', TicketDetailView.as_view(), name='ticket-detail'),
|
||||
path('message/create', MessageCreateView.as_view(), name='message-create'),
|
||||
path('attachment/create', AttachmentUploadView.as_view(), name='attachment-upload'),
|
||||
path('create', views.TicketCreateView.as_view(), name='ticket-create'),
|
||||
path('', views.TicketListView.as_view(), name='ticket-list'),
|
||||
path('<int:pk>', views.TicketDetailView.as_view(), name='ticket-detail'),
|
||||
path('message/create', views.MessageCreateView.as_view(), name='message-create'),
|
||||
path('attachment/create', views.AttachmentUploadView.as_view(), name='attachment-upload'),
|
||||
path('attachment/delete/<int:pk>', views.AttachmentDeleteView.as_view(), name='attachment-upload'),
|
||||
]
|
||||
+12
-2
@@ -1,7 +1,7 @@
|
||||
from rest_framework import generics, permissions
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
from .models import Ticket, Message
|
||||
from .models import Ticket, Message, Attachment
|
||||
from .serializers import TicketListSerializer, MessageSerializer, TicketSerializer, AttachmentSerializer
|
||||
from utils.pagination import StructurePagination
|
||||
from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes
|
||||
@@ -9,8 +9,18 @@ from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework.parsers import MultiPartParser, FormParser
|
||||
from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiExample, OpenApiTypes, OpenApiResponse
|
||||
from rest_framework import status
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
|
||||
class AttachmentDeleteView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
serializer_class = [AttachmentSerializer]
|
||||
def delete(self, request, pk):
|
||||
attachment_instance = get_object_or_404(Attachment, pk=pk)
|
||||
if attachment_instance.uploaded_by == request.user:
|
||||
attachment_instance.delete()
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
return Response({'detail': 'این فایل توسط شما اپلود نشده'})
|
||||
|
||||
class AttachmentUploadView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
@@ -24,7 +34,7 @@ class AttachmentUploadView(APIView):
|
||||
def post(self, request, *args, **kwargs):
|
||||
serializer = AttachmentSerializer(data=request.data, context={'request': request})
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
serializer.save(uploaded_by=request.user)
|
||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user