From 16b11327eea83565c1415793b5ef6b6b3a5cef1e Mon Sep 17 00:00:00 2001 From: 3252a8 <3252a8@proton.me> Date: Thu, 30 Apr 2026 07:57:14 +0300 Subject: [PATCH] fix: traffic strategy --- bot/app/web/subscription_webapp.py | 2 +- bot/services/subscription_service.py | 2 ++ config/settings.py | 1 + tests/test_settings.py | 11 +++++++++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/bot/app/web/subscription_webapp.py b/bot/app/web/subscription_webapp.py index bb90775..f7862b6 100644 --- a/bot/app/web/subscription_webapp.py +++ b/bot/app/web/subscription_webapp.py @@ -2137,7 +2137,7 @@ async def _build_user_payload(request: web.Request, user_id: int) -> Dict[str, A "trial_available": trial_available, "trial_duration_days": int(settings.TRIAL_DURATION_DAYS or 0), "trial_traffic_limit_gb": float(settings.TRIAL_TRAFFIC_LIMIT_GB or 0), - "trial_traffic_strategy": settings.TRIAL_TRAFFIC_STRATEGY, + "trial_traffic_strategy": getattr(settings, "TRIAL_TRAFFIC_STRATEGY", "NO_RESET"), "email_auth_enabled": settings.email_auth_configured, }, } diff --git a/bot/services/subscription_service.py b/bot/services/subscription_service.py index b20ee34..a7a2a9d 100644 --- a/bot/services/subscription_service.py +++ b/bot/services/subscription_service.py @@ -427,6 +427,7 @@ class SubscriptionService: "is_active": True, "status_from_panel": "TRIAL", "traffic_limit_bytes": self.settings.trial_traffic_limit_bytes, + "traffic_limit_strategy": self.settings.TRIAL_TRAFFIC_STRATEGY, "auto_renew_enabled": False, } try: @@ -448,6 +449,7 @@ class SubscriptionService: expire_at=end_date, status="ACTIVE", traffic_limit_bytes=self.settings.trial_traffic_limit_bytes, + traffic_limit_strategy=self.settings.TRIAL_TRAFFIC_STRATEGY, ) panel_update_payload.update(self._panel_identity_payload_for_user(db_user)) diff --git a/config/settings.py b/config/settings.py index 2e5ab5c..bd2a598 100644 --- a/config/settings.py +++ b/config/settings.py @@ -314,6 +314,7 @@ class Settings(BaseSettings): TRIAL_ENABLED: bool = Field(default=True) TRIAL_DURATION_DAYS: int = Field(default=3) TRIAL_TRAFFIC_LIMIT_GB: Optional[float] = Field(default=5.0) + TRIAL_TRAFFIC_STRATEGY: str = Field(default="NO_RESET") CRYPT4_ENABLED: bool = Field(default=False, description="Enable happ crypt4 encryption for subscription URLs") CRYPT4_REDIRECT_URL: Optional[str] = Field(default=None, description="Base redirect URL used for the connect button when crypt4 is enabled") diff --git a/tests/test_settings.py b/tests/test_settings.py index ea4d01d..f8f1b5a 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -26,3 +26,14 @@ class SettingsTests(unittest.TestCase): self.assertTrue(settings.WEBAPP_SESSION_SECRET) self.assertTrue(settings.WEBHOOK_SECRET_TOKEN) self.assertEqual(settings.WEBAPP_SESSION_TTL_SECONDS, 86400) + + def test_trial_traffic_strategy_is_available(self): + settings = Settings( + _env_file=None, + BOT_TOKEN="token", + POSTGRES_USER="app_user", + POSTGRES_PASSWORD="app_password", + TRIAL_TRAFFIC_STRATEGY="WEEK", + ) + + self.assertEqual(settings.TRIAL_TRAFFIC_STRATEGY, "WEEK")