From 38ff15e7942b2b19f345cf63d53c7d94e5e7d8bc Mon Sep 17 00:00:00 2001 From: Egor Date: Sat, 31 Jan 2026 16:58:32 +0300 Subject: [PATCH] Update subscription.py --- app/cabinet/routes/subscription.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/cabinet/routes/subscription.py b/app/cabinet/routes/subscription.py index 2ccbf4a6..a9315b62 100644 --- a/app/cabinet/routes/subscription.py +++ b/app/cabinet/routes/subscription.py @@ -3284,6 +3284,11 @@ async def toggle_subscription_pause( new_paused_state = not is_currently_paused user.subscription.is_daily_paused = new_paused_state + # Сохраняем статус ДО изменения для проверки RemnaWave + from app.database.models import SubscriptionStatus + + was_disabled = user.subscription.status == SubscriptionStatus.DISABLED.value + # If resuming, check balance if not new_paused_state: daily_price = getattr(tariff, 'daily_price_kopeks', 0) @@ -3299,9 +3304,7 @@ async def toggle_subscription_pause( ) # Restore ACTIVE status if was DISABLED - from app.database.models import SubscriptionStatus - - if user.subscription.status == SubscriptionStatus.DISABLED.value: + if was_disabled: user.subscription.status = SubscriptionStatus.ACTIVE.value user.subscription.last_daily_charge_at = datetime.utcnow() user.subscription.end_date = datetime.utcnow() + timedelta(days=1) @@ -3310,14 +3313,15 @@ async def toggle_subscription_pause( await db.refresh(user.subscription) await db.refresh(user) - # Sync with RemnaWave when resuming - if not new_paused_state: + # Sync with RemnaWave only when resuming from DISABLED state + # При паузе НЕ отключаем - пользователь может пользоваться до конца оплаченного периода + # При возобновлении включаем только если подписка была отключена (DISABLED) + if not new_paused_state and user.remnawave_uuid and was_disabled: try: subscription_service = SubscriptionService() - if user.remnawave_uuid: - await subscription_service.enable_remnawave_user(user.remnawave_uuid) + await subscription_service.enable_remnawave_user(user.remnawave_uuid) except Exception as e: - logger.error(f'Error syncing with RemnaWave on resume: {e}') + logger.error(f'Error enabling RemnaWave user on resume: {e}') if new_paused_state: message = 'Daily subscription paused'