diff --git a/manage_subscriptions/views.py b/manage_subscriptions/views.py index 17e5f8d..fcb7c9b 100644 --- a/manage_subscriptions/views.py +++ b/manage_subscriptions/views.py @@ -31,6 +31,7 @@ from django.views.decorators.http import require_POST from django.conf import settings from django.views.generic.base import TemplateView from django.db.models import Q + # Create your views here. @@ -434,30 +435,33 @@ def validate_coupon(request): except Subscription.DoesNotExist: return JsonResponse({"error": "Subscription not found."}, status=404) + # If no coupon code is provided, assume no discount and proceed + if not coupon_code: + return JsonResponse({"message": "No coupon code provided."}, status=200) + # Validating Coupon - if coupon_code: - try: - coupon = Coupon.objects.get(coupon_code=coupon_code) - if not coupon.is_valid(): - return JsonResponse({"error": "Coupon is not valid."}, status=400) - if coupon.discount_amount and coupon.discount_amount > subscription.amount: - return JsonResponse( - {"error": "Coupon discount amount exceeds subscription amount."}, - status=400, - ) - if ( - coupon.discount_percentage - and (coupon.discount_percentage / Decimal("100")) * subscription.amount - > subscription.amount - ): - return JsonResponse( - { - "error": "Coupon discount percentage exceeds subscription amount." - }, - status=400, - ) - except Coupon.DoesNotExist: - return JsonResponse({"error": "Coupon not found."}, status=404) + try: + coupon = Coupon.objects.get(coupon_code=coupon_code) + if not coupon.is_valid(): + return JsonResponse({"error": "Coupon is not valid."}, status=400) + if coupon.discount_amount and coupon.discount_amount > subscription.amount: + return JsonResponse( + {"error": "Coupon discount amount exceeds subscription amount."}, + status=400, + ) + if ( + coupon.discount_percentage + and (coupon.discount_percentage / Decimal("100")) * subscription.amount + > subscription.amount + ): + return JsonResponse( + {"error": "Coupon discount percentage exceeds subscription amount."}, + status=400, + ) + except Coupon.DoesNotExist: + return JsonResponse({"error": "Coupon not found."}, status=404) + + return JsonResponse({"message": "Coupon is valid."}, status=200) @csrf_exempt