added grace period
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user