cart item clear and apply discount view

This commit is contained in:
Parsa Nazer
2025-03-11 00:09:51 +03:30
parent 2589ac7321
commit 06b540d069
2 changed files with 35 additions and 3 deletions
+4 -2
View File
@@ -1,11 +1,13 @@
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include
from .views import CartItemViews, CartView, OrderlistView
from .views import CartItemViews, CartView, OrderlistView, CartItemClear, ApplyDiscountView
urlpatterns = [
path('list', OrderlistView.as_view(), name='order-list'),
path('all', OrderlistView.as_view(), name='order-list'),
path('cart', CartView.as_view()),
path('cart/discount', ApplyDiscountView.as_view()),
path('cart/all', CartItemClear.as_view()),
path('cart/item/<int:pk>', CartItemViews.as_view(), name='change-item-cart'),
# path('payment', CartView.as_view()),
# path('', CartView.as_view()),
+31 -1
View File
@@ -7,7 +7,7 @@ from rest_framework.permissions import IsAuthenticated
from .serializers import *
# from cart.models import
from rest_framework import status
from .models import OrderItemModel, OrderModel
from .models import OrderItemModel, OrderModel, DiscountCode
try:
pass
except DiscountNotAvailableError:
@@ -24,6 +24,36 @@ pay
class ApplyDiscountView(APIView):
serializer_class = DiscountCodeSerializer
permission_classes = [IsAuthenticated]
def post(self, request):
cart_order, created = OrderModel.objects.get_or_create(
user=request.user,
status='CART'
)
discount_code = get_object_or_404(DiscountCode, code=request.data.get('code'))
if not discount_code.is_valid():
return Response({'detail': discount_code.not_valid_reason()}, status=status.HTTP_400_BAD_REQUEST)
cart_order.discount_code = discount_code
cart_order.save()
return Response({'detail': 'کد تخفیف با موفقیت اعمال شد'}, status=status.HTTP_200_OK)
class CartItemClear(APIView):
permission_classes = [IsAuthenticated]
serializer_class = OrderItemSerailzier
def delete(self, request):
cart_order, created = OrderModel.objects.get_or_create(
user=request.user,
status='CART'
)
cart_order.items.all().delete()
return Response({'detail': f'سبد خرید با موفقیت خالی شد'}, status=status.HTTP_204_NO_CONTENT)
class CartItemViews(APIView):
permission_classes = [IsAuthenticated]
serializer_class = OrderItemSerailzier