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