order list view and serilaizer
This commit is contained in:
+11
-9
@@ -59,21 +59,23 @@ class OrderModel(models.Model):
|
|||||||
print('didnt send')
|
print('didnt send')
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
def total_with_discount(self):
|
def discount(self):
|
||||||
total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
|
pass
|
||||||
if self.discount_code:
|
# total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
|
||||||
if not self.discount_code.is_valid():
|
# if self.discount_code:
|
||||||
raise DiscountNotAvailableError('این کد تخفیف دیگر معتبر نیست')
|
# if not self.discount_code.is_valid():
|
||||||
discount_percent = self.discount_code.percent
|
# raise DiscountNotAvailableError('این کد تخفیف دیگر معتبر نیست')
|
||||||
return total_with_item_discount * ((100 - discount_percent) / 100)
|
# discount_percent = self.discount_code.percent
|
||||||
return total_with_item_discount
|
# return total_with_item_discount * ((100 - discount_percent) / 100)
|
||||||
|
# return total_with_item_discount
|
||||||
|
|
||||||
|
|
||||||
def tax(self):
|
def tax(self):
|
||||||
return self.total_without_tax() * 0.2
|
return self.total_without_tax() * 0.2
|
||||||
|
|
||||||
def total(self):
|
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):
|
def remove_order_item(self, item_pk, quantity):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -8,8 +8,14 @@ class OrderItemSerailzier(serializers.ModelSerializer):
|
|||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
read_only_fields = ('order', 'product')
|
read_only_fields = ('order', 'product')
|
||||||
|
|
||||||
class OrderModelSerializer(serializers.ModelSerializer):
|
class CartSerializer(serializers.ModelSerializer):
|
||||||
items = OrderItemSerailzier(many=True)
|
items = OrderItemSerailzier(many=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = OrderModel
|
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.conf.urls.static import static
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from .views import CartItemViews, CartView
|
from .views import CartItemViews, CartView, OrderlistView
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
path('list', OrderlistView.as_view(), name='order-list'),
|
||||||
path('cart', CartView.as_view()),
|
path('cart', CartView.as_view()),
|
||||||
path('cart/item/<int:pk>', CartItemViews.as_view(), name='change-item-cart'),
|
path('cart/item/<int:pk>', CartItemViews.as_view(), name='change-item-cart'),
|
||||||
# path('payment', CartView.as_view()),
|
# 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 django.shortcuts import get_object_or_404
|
||||||
from product.models import ProductVariant
|
from product.models import ProductVariant
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
from .serializers import OrderItemSerailzier, OrderModelSerializer
|
from .serializers import *
|
||||||
# from cart.models import
|
# from cart.models import
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from .models import OrderItemModel, OrderModel
|
from .models import OrderItemModel, OrderModel
|
||||||
@@ -53,11 +53,6 @@ class CartItemViews(APIView):
|
|||||||
user=request.user,
|
user=request.user,
|
||||||
status='CART'
|
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 = get_object_or_404(OrderItemModel, order=cart_order, product=product_variant)
|
||||||
order_item.delete()
|
order_item.delete()
|
||||||
return Response({'detail': f'محصول {product_variant.product.name} از سبد خرید پاک شد'}, status=status.HTTP_204_NO_CONTENT)
|
return Response({'detail': f'محصول {product_variant.product.name} از سبد خرید پاک شد'}, status=status.HTTP_204_NO_CONTENT)
|
||||||
@@ -66,9 +61,19 @@ class CartItemViews(APIView):
|
|||||||
|
|
||||||
class CartView(APIView):
|
class CartView(APIView):
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
serializer_class = OrderModelSerializer
|
serializer_class = CartSerializer
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
user = request.user
|
user = request.user
|
||||||
cart_instance, created = OrderModel.objects.get_or_create(user=user, status='CART')
|
cart_instance, created = OrderModel.objects.get_or_create(user=user, status='CART')
|
||||||
cart_ser = self.serializer_class(instance=cart_instance, context={'request': request})
|
cart_ser = self.serializer_class(instance=cart_instance, context={'request': request})
|
||||||
return Response(cart_ser.data, status=status.HTTP_200_OK)
|
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