add order detial view
This commit is contained in:
@@ -151,7 +151,7 @@ class OrderListSerializer(serializers.ModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = OrderModel
|
model = OrderModel
|
||||||
fields = ['created_at', 'status', "images", "count",
|
fields = ['created_at', 'status', "images", "count",
|
||||||
"id", 'final_price', 'order_id', 'verbose_status']
|
"id", 'final_price', 'order_id', 'verbose_status', 'is_paid']
|
||||||
read_only_fields = ['count', 'images', 'order_id', 'verbose_status']
|
read_only_fields = ['count', 'images', 'order_id', 'verbose_status']
|
||||||
|
|
||||||
def get_verbose_status(self, obj):
|
def get_verbose_status(self, obj):
|
||||||
@@ -172,12 +172,46 @@ class OrderListSerializer(serializers.ModelSerializer):
|
|||||||
return filter(lambda x: x is not None, image_list)
|
return filter(lambda x: x is not None, image_list)
|
||||||
|
|
||||||
|
|
||||||
|
class OrderItemDetailSerializer(serializers.ModelSerializer):
|
||||||
|
product = serializers.SerializerMethodField()
|
||||||
|
price = serializers.SerializerMethodField()
|
||||||
|
final_price = serializers.SerializerMethodField()
|
||||||
|
discount_amount = serializers.SerializerMethodField()
|
||||||
|
special_discount = serializers.SerializerMethodField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = OrderItemModel
|
||||||
|
fields = [
|
||||||
|
'id', 'product', 'quantity', 'price', 'final_price',
|
||||||
|
'discount_amount', 'discount_percent', 'special_discount',
|
||||||
|
]
|
||||||
|
|
||||||
|
def get_product(self, obj):
|
||||||
|
return ProductVariantSerialzier(
|
||||||
|
instance=obj.product, context={'request': self.context.get('request')}
|
||||||
|
).data
|
||||||
|
|
||||||
|
def get_price(self, obj):
|
||||||
|
return f'{obj.total_price_before_discount():,.0f} تومانءءء'
|
||||||
|
|
||||||
|
def get_final_price(self, obj):
|
||||||
|
return f'{obj.price_after_special_discount():,.0f} تومانءءء'
|
||||||
|
|
||||||
|
def get_discount_amount(self, obj):
|
||||||
|
return f'{obj.total_product_discount_amount():,.0f} تومانءءء'
|
||||||
|
|
||||||
|
def get_special_discount(self, obj):
|
||||||
|
if obj.special_discount_amount:
|
||||||
|
return f'{obj.special_discount_amount:,.0f} تومانءءء'
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class OrderGetSerializer(serializers.ModelSerializer):
|
class OrderGetSerializer(serializers.ModelSerializer):
|
||||||
count = serializers.SerializerMethodField()
|
count = serializers.SerializerMethodField()
|
||||||
images = serializers.SerializerMethodField()
|
images = serializers.SerializerMethodField()
|
||||||
order_id = serializers.SerializerMethodField()
|
order_id = serializers.SerializerMethodField()
|
||||||
verbose_status = serializers.SerializerMethodField()
|
verbose_status = serializers.SerializerMethodField()
|
||||||
items = OrderItemSerailzier(many=True)
|
items = OrderItemDetailSerializer(many=True)
|
||||||
address = UserAddressSerializer()
|
address = UserAddressSerializer()
|
||||||
discount_code = DiscountCodeSerializer()
|
discount_code = DiscountCodeSerializer()
|
||||||
|
|
||||||
|
|||||||
+11
-6
@@ -214,11 +214,13 @@ class OrderlistView(APIView):
|
|||||||
status_filter = request.query_params.get("status", None)
|
status_filter = request.query_params.get("status", None)
|
||||||
sort = request.query_params.get('sort', None)
|
sort = request.query_params.get('sort', None)
|
||||||
if status_filter in ['ADMIN_PENDING', 'PENDING', 'POSTED', 'RECEIVED', 'CANCELED', 'REFUNDED']:
|
if status_filter in ['ADMIN_PENDING', 'PENDING', 'POSTED', 'RECEIVED', 'CANCELED', 'REFUNDED']:
|
||||||
orders.filter(status=status_filter)
|
orders = orders.filter(status=status_filter)
|
||||||
if sort:
|
if sort:
|
||||||
if sort not in ['created_at', '-created_at', 'final_price', '-final_price']:
|
if sort not in ['created_at', '-created_at', 'final_price', '-final_price']:
|
||||||
return Response({'detail': 'پارامتر sort اشتباه است'}, status=status.HTTP_400_BAD_REQUEST)
|
return Response({'detail': 'پارامتر sort اشتباه است'}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
orders = orders.order_by(sort)
|
orders = orders.order_by(sort)
|
||||||
|
else:
|
||||||
|
orders = orders.order_by('-created_at')
|
||||||
paginator = self.pagination_class()
|
paginator = self.pagination_class()
|
||||||
paginated_orders = paginator.paginate_queryset(orders, request)
|
paginated_orders = paginator.paginate_queryset(orders, request)
|
||||||
orders_ser = self.serializer_class(
|
orders_ser = self.serializer_class(
|
||||||
@@ -544,11 +546,14 @@ class UserOrderInvoiceView(APIView):
|
|||||||
bank_detail = Bank.objects.get(tracking_code=order_id)
|
bank_detail = Bank.objects.get(tracking_code=order_id)
|
||||||
order = bank_detail.order
|
order = bank_detail.order
|
||||||
order_id = order.id
|
order_id = order.id
|
||||||
except OrderModel.DoesNotExist:
|
except Bank.DoesNotExist:
|
||||||
return Response(
|
try:
|
||||||
{'detail': 'سفارش مورد نظر یافت نشد'},
|
order = OrderModel.objects.get(id=order_id)
|
||||||
status=status.HTTP_404_NOT_FOUND,
|
except OrderModel.DoesNotExist:
|
||||||
)
|
return Response(
|
||||||
|
{'detail': 'سفارش مورد نظر یافت نشد'},
|
||||||
|
status=status.HTTP_404_NOT_FOUND,
|
||||||
|
)
|
||||||
|
|
||||||
if order.user != request.user:
|
if order.user != request.user:
|
||||||
return Response(
|
return Response(
|
||||||
|
|||||||
Reference in New Issue
Block a user