added grace period

This commit is contained in:
rizwanisready
2024-04-10 13:15:49 +05:30
parent 1b59354f11
commit 34892e435d

View File

@@ -196,21 +196,25 @@ class ProfileSerializer(serializers.ModelSerializer):
"grace_period_end_date": None,
}
today = timezone.now().date()
active_subscriptions = PrincipalSubscription.objects.filter(
# Attempt to find the active subscription with the furthest grace_period_end_date
latest_subscription = PrincipalSubscription.objects.filter(
principal=obj,
is_paid=True,
cancelled=False,
deleted=False,
active=True,
status=SubscriptionStatus.ACTIVE,
end_date__gte=today,
)
if active_subscriptions.exists():
latest_subscription = active_subscriptions.last()
subscription_status["has_active_subscription"] = latest_subscription.is_paid and latest_subscription.status == SubscriptionStatus.ACTIVE and latest_subscription.end_date >= today
subscription_status["in_grace_period"] = not subscription_status["has_active_subscription"] and latest_subscription.grace_period_end_date >= today
subscription_status["grace_period_end_date"] = latest_subscription.grace_period_end_date if subscription_status["in_grace_period"] else None
return active_subscriptions.exists()
).order_by('-grace_period_end_date').first() # Order by descending grace_period_end_date and take the first
if latest_subscription:
# Check if we're within the grace period
if today <= latest_subscription.grace_period_end_date:
subscription_status['has_active_subscription'] = today <= latest_subscription.end_date
subscription_status['in_grace_period'] = latest_subscription.end_date < today <= latest_subscription.grace_period_end_date
subscription_status['grace_period_end_date'] = latest_subscription.grace_period_end_date
return subscription_status
def to_representation(self, instance):
data = super().to_representation(instance)