from django.shortcuts import render from .execptions import DiscountNotAvailableError from rest_framework.views import APIView, Response from django.shortcuts import get_object_or_404 from product.models import ProductVariant from rest_framework.permissions import IsAuthenticated from .serializers import OrderItemSerailzier, OrderModelSerializer # from cart.models import from rest_framework import status from .models import OrderItemModel, OrderModel try: pass except DiscountNotAvailableError: pass """ add post remove delete show get pay """ class CartItemViews(APIView): permission_classes = [IsAuthenticated] serializer_class = OrderItemSerailzier def post(self, request, pk): product_variant = get_object_or_404(ProductVariant, pk=pk) response = 'محصول با موفقیت به سبد خرید اضافه شد' quantity = request.data.get('quantity', 1) if product_variant.in_stock < quantity: quantity = product_variant.in_stock response = 'تعداد درخواستی بیشتر از موجودی محصول میباشد' cart_order, created = OrderModel.objects.get_or_create(user=request.user, status='CART') order_item, created = OrderItemModel.objects.get_or_create(order=cart_order, product=product_variant, defaults={'quantity': quantity}) if not created and order_item.quantity: order_item.quantity = quantity order_item.save() if not order_item.quantity: order_item.delete() return Response({'detail': response, 'count': quantity}, status=status.HTTP_202_ACCEPTED) def delete(self, request, pk): product_variant = get_object_or_404(ProductVariant, pk=pk) cart_order, created = OrderModel.objects.get_or_create( user=request.user, status='CART' ) # order_item, created = OrderItemModel.objects.get_or_create( # order=cart_order, # product=product_variant, # defaults={'quantity': request.data.get('quantity', 1)} # ) 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) class CartView(APIView): permission_classes = [IsAuthenticated] serializer_class = OrderModelSerializer def get(self, request): user = request.user cart_instance, created = OrderModel.objects.get_or_create(user=user, status='CART') cart_ser = self.serializer_class(instance=cart_instance, context={'request': request}) return Response(cart_ser.data, status=status.HTTP_200_OK)