order list view and serilaizer
This commit is contained in:
+11
-9
@@ -59,21 +59,23 @@ class OrderModel(models.Model):
|
||||
print('didnt send')
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def total_with_discount(self):
|
||||
total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
|
||||
if self.discount_code:
|
||||
if not self.discount_code.is_valid():
|
||||
raise DiscountNotAvailableError('این کد تخفیف دیگر معتبر نیست')
|
||||
discount_percent = self.discount_code.percent
|
||||
return total_with_item_discount * ((100 - discount_percent) / 100)
|
||||
return total_with_item_discount
|
||||
def discount(self):
|
||||
pass
|
||||
# total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
|
||||
# if self.discount_code:
|
||||
# if not self.discount_code.is_valid():
|
||||
# raise DiscountNotAvailableError('این کد تخفیف دیگر معتبر نیست')
|
||||
# discount_percent = self.discount_code.percent
|
||||
# return total_with_item_discount * ((100 - discount_percent) / 100)
|
||||
# return total_with_item_discount
|
||||
|
||||
|
||||
def tax(self):
|
||||
return self.total_without_tax() * 0.2
|
||||
|
||||
def total(self):
|
||||
return self.total_with_discount() + self.tax()
|
||||
pass
|
||||
# return self.total_with_discount() + self.tax()
|
||||
|
||||
def remove_order_item(self, item_pk, quantity):
|
||||
pass
|
||||
|
||||
@@ -8,8 +8,14 @@ class OrderItemSerailzier(serializers.ModelSerializer):
|
||||
fields = "__all__"
|
||||
read_only_fields = ('order', 'product')
|
||||
|
||||
class OrderModelSerializer(serializers.ModelSerializer):
|
||||
class CartSerializer(serializers.ModelSerializer):
|
||||
items = OrderItemSerailzier(many=True)
|
||||
class Meta:
|
||||
model = OrderModel
|
||||
fields = ['address', 'created_at', 'is_paid', 'status', 'discount_code', 'items']
|
||||
fields = ['address', 'created_at', 'is_paid', 'status', 'discount_code', 'items']
|
||||
|
||||
|
||||
class OrderSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = OrderModel
|
||||
fields = ['address', 'created_at', 'is_paid', 'status', 'discount_code',]
|
||||
@@ -1,9 +1,10 @@
|
||||
from django.conf.urls.static import static
|
||||
from django.contrib import admin
|
||||
from django.urls import path, include
|
||||
from .views import CartItemViews, CartView
|
||||
from .views import CartItemViews, CartView, OrderlistView
|
||||
|
||||
urlpatterns = [
|
||||
path('list', OrderlistView.as_view(), name='order-list'),
|
||||
path('cart', CartView.as_view()),
|
||||
path('cart/item/<int:pk>', CartItemViews.as_view(), name='change-item-cart'),
|
||||
# path('payment', CartView.as_view()),
|
||||
|
||||
+12
-7
@@ -4,7 +4,7 @@ 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 .serializers import *
|
||||
# from cart.models import
|
||||
from rest_framework import status
|
||||
from .models import OrderItemModel, OrderModel
|
||||
@@ -53,11 +53,6 @@ class CartItemViews(APIView):
|
||||
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)
|
||||
@@ -66,9 +61,19 @@ class CartItemViews(APIView):
|
||||
|
||||
class CartView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
serializer_class = OrderModelSerializer
|
||||
serializer_class = CartSerializer
|
||||
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)
|
||||
|
||||
|
||||
class OrderlistView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
serializer_class = OrderSerializer
|
||||
def get(self, request):
|
||||
user = request.user
|
||||
orders = OrderModel.objects.filter(user=user).exclude(status="CART")
|
||||
orders_ser = self.serializer_class(instance=orders, many=True, context={'request': request})
|
||||
return Response(orders_ser.data, status=status.HTTP_200_OK)
|
||||
Reference in New Issue
Block a user