add order detial view
This commit is contained in:
@@ -151,7 +151,7 @@ class OrderListSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = OrderModel
|
||||
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']
|
||||
|
||||
def get_verbose_status(self, obj):
|
||||
@@ -172,12 +172,46 @@ class OrderListSerializer(serializers.ModelSerializer):
|
||||
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):
|
||||
count = serializers.SerializerMethodField()
|
||||
images = serializers.SerializerMethodField()
|
||||
order_id = serializers.SerializerMethodField()
|
||||
verbose_status = serializers.SerializerMethodField()
|
||||
items = OrderItemSerailzier(many=True)
|
||||
items = OrderItemDetailSerializer(many=True)
|
||||
address = UserAddressSerializer()
|
||||
discount_code = DiscountCodeSerializer()
|
||||
|
||||
|
||||
+11
-6
@@ -214,11 +214,13 @@ class OrderlistView(APIView):
|
||||
status_filter = request.query_params.get("status", None)
|
||||
sort = request.query_params.get('sort', None)
|
||||
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 not in ['created_at', '-created_at', 'final_price', '-final_price']:
|
||||
return Response({'detail': 'پارامتر sort اشتباه است'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
orders = orders.order_by(sort)
|
||||
else:
|
||||
orders = orders.order_by('-created_at')
|
||||
paginator = self.pagination_class()
|
||||
paginated_orders = paginator.paginate_queryset(orders, request)
|
||||
orders_ser = self.serializer_class(
|
||||
@@ -544,11 +546,14 @@ class UserOrderInvoiceView(APIView):
|
||||
bank_detail = Bank.objects.get(tracking_code=order_id)
|
||||
order = bank_detail.order
|
||||
order_id = order.id
|
||||
except OrderModel.DoesNotExist:
|
||||
return Response(
|
||||
{'detail': 'سفارش مورد نظر یافت نشد'},
|
||||
status=status.HTTP_404_NOT_FOUND,
|
||||
)
|
||||
except Bank.DoesNotExist:
|
||||
try:
|
||||
order = OrderModel.objects.get(id=order_id)
|
||||
except OrderModel.DoesNotExist:
|
||||
return Response(
|
||||
{'detail': 'سفارش مورد نظر یافت نشد'},
|
||||
status=status.HTTP_404_NOT_FOUND,
|
||||
)
|
||||
|
||||
if order.user != request.user:
|
||||
return Response(
|
||||
|
||||
Reference in New Issue
Block a user