24 lines
1.0 KiB
Python
24 lines
1.0 KiB
Python
from django.utils import timezone
|
||
|
||
from .models import Subscription
|
||
|
||
|
||
def activate_subscription(subscription_id: int):
|
||
"""
|
||
بعد از تایید پرداخت (payment webhook) صدا زده میشه؛ اشتراک رو active
|
||
میکنه و expires_at رو بر اساس Plan.duration_days محاسبه میکنه.
|
||
(قبلاً چون Plan فیلد durationای نداشت، این مقدار با یک قاعدهی stub
|
||
بر اساس متن title حدس زده میشد؛ الان duration_days مستقیماً از مدل
|
||
Plan خونده میشه.)
|
||
"""
|
||
try:
|
||
subscription = Subscription.objects.get(pk=subscription_id)
|
||
except Subscription.DoesNotExist:
|
||
return None
|
||
|
||
duration_days = subscription.plan.duration_days if subscription.plan else 30
|
||
subscription.status = 'active'
|
||
subscription.expires_at = timezone.now() + timezone.timedelta(days=duration_days)
|
||
subscription.save(update_fields=['status', 'expires_at'])
|
||
return subscription
|