delete item update and permisons for it

This commit is contained in:
Parsa Nazer
2025-03-13 19:01:20 +03:30
parent 4ae6b7c9b6
commit ab5b761216
2 changed files with 25 additions and 8 deletions
+15
View File
@@ -0,0 +1,15 @@
from rest_framework.permissions import BasePermission
class CanDeleteCartItemPermissions(BasePermission):
message = "شما دسترسی حذف این ایتم رو ندارید"
def has_object_permission(self, request, view, obj):
if obj.order.user != request.user:
self.message = "این آیتم متعلق به سبد خرید شما نیست."
return False
if obj.order.status != 'CART':
self.message = "وضعیت سفارش سبد خرید نیست و آیتمی را نمی‌توانید حذف کنید."
return False
return True
+10 -8
View File
@@ -8,6 +8,7 @@ from .serializers import *
# from cart.models import
from rest_framework import status
from .models import OrderItemModel, OrderModel, DiscountCode
from .permissons import CanDeleteCartItemPermissions
try:
pass
except DiscountNotAvailableError:
@@ -78,16 +79,17 @@ class CartItemViews(APIView):
def delete(self, request, pk):
product_variant = get_object_or_404(ProductVariant, pk=pk)
order_item = get_object_or_404(OrderItemModel, pk=pk)
permission = CanDeleteCartItemPermissions()
if not permission.has_object_permission(request, self, order_item):
return Response({"detail": permission.message}, status=status.HTTP_403_FORBIDDEN)
cart_order, created = OrderModel.objects.get_or_create(
user=request.user,
status='CART'
)
order_item = get_object_or_404(OrderItemModel, order=cart_order, product=product_variant)
order_item.delete()
return Response({'detail': f'محصول {product_variant.product.name} از سبد خرید پاک شد'}, status=status.HTTP_204_NO_CONTENT)
return Response(
{"detail": f"محصول {order_item.product.name} از سبد خرید پاک شد"},
status=status.HTTP_204_NO_CONTENT,
)
class CartView(APIView):