update price formats

This commit is contained in:
Parsa Nazer
2025-03-12 23:03:57 +03:30
parent 95020a5dbf
commit 4ae6b7c9b6
3 changed files with 95 additions and 8 deletions
+15 -7
View File
@@ -9,15 +9,23 @@ class ProductVariantSerialzier(serializers.ModelSerializer):
image = serializers.SerializerMethodField()
discount_amount = serializers.SerializerMethodField()
title = serializers.SerializerMethodField()
price = serializers.CharField()
price = serializers.SerializerMethodField()
final_price = serializers.SerializerMethodField()
category = serializers.SerializerMethodField()
class Meta:
model = ProductVariant
fields = ['title', 'product_attributes', 'in_stock', 'price', 'discount', 'color', 'image', 'discount_amount', 'category']
fields = ['title', 'product_attributes', 'in_stock', 'price', 'discount', 'color', 'image', 'discount_amount', 'category', 'final_price']
def get_discount_amount(self, obj):
discount_amount = int(obj.price * (obj.discount / 100))
return f'{discount_amount}'
return f'{discount_amount:,.0f} تومان'
def get_final_price(self, obj):
final_price = obj.price - int(obj.price * (obj.discount / 100))
return f'{final_price:,.0f} تومان'
def get_price(self, obj):
return f'{obj.price:,.0f} تومان'
def get_image(self, obj):
return self.context.get('request').build_absolute_uri(obj.images.all().first().image.url)
@@ -64,7 +72,7 @@ class CartSerializer(serializers.ModelSerializer):
return {
'code': f'{obj.discount_code.code}',
'percent': obj.discount_code.percent,
'amount': '100000'
'amount': f'{10000:,.0f} تومان'
}
else:
return None
@@ -74,14 +82,14 @@ class CartSerializer(serializers.ModelSerializer):
def get_tax(self, obj):
return '1000'
return f'{1000:,.0f} تومان'
def get_cart_total(self, obj):
return '10000'
return f'{10000:,.0f} تومان'
def get_final_price(self, obj):
return '8000'
return f'{8000:,.0f} تومان'
class OrderSerializer(serializers.ModelSerializer):
+62 -1
View File
@@ -107,4 +107,65 @@ class OrderlistView(APIView):
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)
return Response(orders_ser.data, status=status.HTTP_200_OK)
# from rest_framework.views import APIView
# from rest_framework.response import Response
# from rest_framework import status
# from azbankgateways import bankfactories, models as bank_models
# class PaymentView(APIView):
# def post(self, request):
# amount = request.data.get('amount')
# user = request.user
# payment = Payment.objects.create(amount=amount, bank_type='ZARINPAL')
# factory = bankfactories.ZarinpalBankFactory()
# try:
# bank = factory.create(
# amount=amount,
# user=user,
# callback_url='http://.com/callback/',
# reference_model=payment,
# )
# bank.ready()
# return Response({'gateway_url': bank.redirect_url}, status=status.HTTP_200_OK)
# except Exception as e:
# return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST)
# from django.views.decorators.csrf import csrf_exempt
# from rest_framework.decorators import api_view
# from rest_framework.response import Response
# from azbankgateways import bankfactories, models as bank_models
# @csrf_exempt
# @api_view(['POST'])
# def callback_view(request):
# tracking_code = request.POST.get('tracking_code')
# payment_id = request.POST.get('payment_id')
# payment = Payment.objects.get(id=payment_id)
# bank_type = payment.bank_type
# factory = bankfactories.BankFactory.get_bank(bank_type)
# try:
# result = factory.verify_transaction(tracking_code)
# if result.is_success:
# payment.status = 'Paid'
# payment.tracking_code = tracking_code
# payment.save()
# return Response({'status': 'Payment successful'})
# else:
# payment.status = 'Failed'
# payment.save()
# return Response({'status': 'Payment failed'})
# except Exception as e:
# return Response({'error': str(e)})