chore: ruff format

This commit is contained in:
Fringg
2026-03-26 10:34:14 +03:00
parent 58d899aab8
commit fec374edba
14 changed files with 48 additions and 79 deletions
+1 -5
View File
@@ -2722,11 +2722,7 @@ async def sync_user_from_panel(
if settings.is_multi_tariff_enabled():
# In multi-tariff mode, user.remnawave_uuid is None; UUIDs live on subscriptions
sub_uuids = [
s.remnawave_uuid
for s in (getattr(user, 'subscriptions', None) or [])
if s.remnawave_uuid
]
sub_uuids = [s.remnawave_uuid for s in (getattr(user, 'subscriptions', None) or []) if s.remnawave_uuid]
for _uuid in sub_uuids:
panel_user = await api.get_user_by_uuid(_uuid)
if panel_user:
+1 -1
View File
@@ -2128,7 +2128,7 @@ async def send_offer_to_segment(callback: CallbackQuery, db_user: User, db: Asyn
for user in users:
if settings.is_multi_tariff_enabled():
all_squads: set[str] = set()
for s in (getattr(user, 'subscriptions', None) or []):
for s in getattr(user, 'subscriptions', None) or []:
all_squads.update(s.connected_squads or [])
connected = all_squads
else:
+1 -2
View File
@@ -2184,8 +2184,7 @@ async def confirm_delete_tariff(
warning = ''
if subs_count > 0:
warning = (
f'\n\n⚠️ <b>Внимание!</b> На этом тарифе {subs_count} неактивных подписок.\n'
f'Они потеряют привязку к тарифу.'
f'\n\n⚠️ <b>Внимание!</b> На этом тарифе {subs_count} неактивных подписок.\nОни потеряют привязку к тарифу.'
)
await callback.message.edit_text(
+9 -5
View File
@@ -1874,9 +1874,7 @@ def get_subscription_expiring_keyboard(subscription_id: int, language: str = DEF
else texts.t('MY_SUBSCRIPTION_BUTTON', '📱 Моя подписка')
)
extend_callback = (
f'se:{subscription_id}' if settings.is_multi_tariff_enabled() else 'subscription_extend'
)
extend_callback = f'se:{subscription_id}' if settings.is_multi_tariff_enabled() else 'subscription_extend'
return InlineKeyboardMarkup(
inline_keyboard=[
@@ -2553,7 +2551,11 @@ def get_device_selection_keyboard(
keyboard.append(row)
if settings.CONNECT_BUTTON_MODE == 'guide':
_osl_cb = f'open_subscription_link:{sub_id}' if sub_id and settings.is_multi_tariff_enabled() else 'open_subscription_link'
_osl_cb = (
f'open_subscription_link:{sub_id}'
if sub_id and settings.is_multi_tariff_enabled()
else 'open_subscription_link'
)
keyboard.append(
[
InlineKeyboardButton(
@@ -2671,7 +2673,9 @@ def get_connection_guide_keyboard(
]
)
_sc_cb = f'subscription_connect:{sub_id}' if sub_id and settings.is_multi_tariff_enabled() else 'subscription_connect'
_sc_cb = (
f'subscription_connect:{sub_id}' if sub_id and settings.is_multi_tariff_enabled() else 'subscription_connect'
)
keyboard.extend(
[
[
+1 -5
View File
@@ -160,11 +160,7 @@ class BlockedUsersService:
async def _check_single_user(self, user: User) -> BlockCheckResult:
"""Проверяет одного пользователя."""
sub_uuids = [
s.remnawave_uuid
for s in (getattr(user, 'subscriptions', None) or [])
if s.remnawave_uuid
]
sub_uuids = [s.remnawave_uuid for s in (getattr(user, 'subscriptions', None) or []) if s.remnawave_uuid]
remnawave_uuids = sub_uuids or ([user.remnawave_uuid] if user.remnawave_uuid else [])
if not user.telegram_id:
+1 -3
View File
@@ -543,9 +543,7 @@ async def cleanup_blocked_broadcast_users(blocked_telegram_ids: list[int]) -> No
# Проверяем, есть ли активная оплаченная подписка
from app.database.crud.subscription import is_active_paid_subscription
sub_result = await session.execute(
select(Subscription).where(Subscription.user_id == user.id)
)
sub_result = await session.execute(select(Subscription).where(Subscription.user_id == user.id))
all_subs = sub_result.scalars().all()
if any(is_active_paid_subscription(s) for s in all_subs):
+6 -2
View File
@@ -179,7 +179,9 @@ class AdvertisingCampaignService:
try:
await self.subscription_service.update_remnawave_user(db, existing_subscription)
except Exception as error:
logger.error('❌ Ошибка синхронизации RemnaWave при продлении кампании', campaign_id=campaign.id, error=error)
logger.error(
'❌ Ошибка синхронизации RemnaWave при продлении кампании', campaign_id=campaign.id, error=error
)
logger.info(
'🎁 Подписка пользователя продлена по кампании на дней',
@@ -354,7 +356,9 @@ class AdvertisingCampaignService:
try:
await self.subscription_service.create_remnawave_user(db, new_subscription)
except Exception as error:
logger.error('❌ Ошибка синхронизации RemnaWave для тарифа кампании', campaign_id=campaign.id, error=error)
logger.error(
'❌ Ошибка синхронизации RemnaWave для тарифа кампании', campaign_id=campaign.id, error=error
)
logger.info(
'🎁 Пользователю выдан тариф по кампании на дней',
+5 -25
View File
@@ -1315,11 +1315,7 @@ class MonitoringService:
from aiogram.types import InlineKeyboardMarkup
extend_callback = (
f'se:{subscription.id}'
if settings.is_multi_tariff_enabled()
else 'subscription_extend'
)
extend_callback = f'se:{subscription.id}' if settings.is_multi_tariff_enabled() else 'subscription_extend'
keyboard = InlineKeyboardMarkup(
inline_keyboard=[
[build_miniapp_or_callback_button(text='💎 Продлить подписку', callback_data=extend_callback)],
@@ -1414,16 +1410,8 @@ class MonitoringService:
from aiogram.types import InlineKeyboardMarkup
extend_callback = (
f'se:{subscription.id}'
if settings.is_multi_tariff_enabled()
else 'subscription_extend'
)
sub_btn_text = (
'📱 Мои подписки'
if settings.is_multi_tariff_enabled()
else '📱 Моя подписка'
)
extend_callback = f'se:{subscription.id}' if settings.is_multi_tariff_enabled() else 'subscription_extend'
sub_btn_text = '📱 Мои подписки' if settings.is_multi_tariff_enabled() else '📱 Моя подписка'
keyboard = InlineKeyboardMarkup(
inline_keyboard=[
[
@@ -1611,11 +1599,7 @@ class MonitoringService:
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
extend_callback = (
f'se:{subscription.id}'
if settings.is_multi_tariff_enabled()
else 'subscription_extend'
)
extend_callback = f'se:{subscription.id}' if settings.is_multi_tariff_enabled() else 'subscription_extend'
keyboard = InlineKeyboardMarkup(
inline_keyboard=[
@@ -1707,11 +1691,7 @@ class MonitoringService:
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
extend_callback = (
f'se:{subscription.id}'
if settings.is_multi_tariff_enabled()
else 'subscription_extend'
)
extend_callback = f'se:{subscription.id}' if settings.is_multi_tariff_enabled() else 'subscription_extend'
keyboard = InlineKeyboardMarkup(
inline_keyboard=[
+1 -3
View File
@@ -55,9 +55,7 @@ _daily_guard = _DailyGuard()
def _build_extend_keyboard(texts, subscription_id: int | None = None) -> InlineKeyboardMarkup:
"""Клавиатура с кнопкой продления подписки для уведомлений."""
extend_callback = (
f'se:{subscription_id}'
if settings.is_multi_tariff_enabled() and subscription_id
else 'subscription_extend'
f'se:{subscription_id}' if settings.is_multi_tariff_enabled() and subscription_id else 'subscription_extend'
)
return InlineKeyboardMarkup(
inline_keyboard=[
+3 -1
View File
@@ -2161,7 +2161,9 @@ class RemnaWaveService:
create_kwargs['external_squad_uuid'] = sub.tariff.external_squad_uuid
# Определяем UUID для обновления
panel_uuid = sub.remnawave_uuid if settings.is_multi_tariff_enabled() else user.remnawave_uuid
panel_uuid = (
sub.remnawave_uuid if settings.is_multi_tariff_enabled() else user.remnawave_uuid
)
# Если нет UUID в базе, ищем пользователя по telegram_id в панели
if not panel_uuid and user.telegram_id:
+11 -8
View File
@@ -413,8 +413,7 @@ class RemnaWaveWebhookService:
# Fallback 2: all lookups exhausted
logger.warning(
'Webhook: подписка не найдена ни по одному методу поиска, '
'возвращаем (user, None)',
'Webhook: подписка не найдена ни по одному методу поиска, возвращаем (user, None)',
remnawave_uuid=remnawave_uuid,
user_id=user.id,
)
@@ -447,9 +446,7 @@ class RemnaWaveWebhookService:
texts = get_texts(user.language)
button_text = texts.get('WEBHOOK_RENEW_BUTTON', 'Renew subscription')
extend_callback = (
f'se:{subscription_id}'
if settings.is_multi_tariff_enabled() and subscription_id
else 'subscription_extend'
f'se:{subscription_id}' if settings.is_multi_tariff_enabled() and subscription_id else 'subscription_extend'
)
return InlineKeyboardMarkup(
inline_keyboard=[
@@ -928,13 +925,17 @@ class RemnaWaveWebhookService:
await self._notify_user(
user,
'WEBHOOK_SUB_DELETED',
reply_markup=self._get_renew_keyboard(user, getattr(subscription, 'id', None) if subscription else None),
reply_markup=self._get_renew_keyboard(
user, getattr(subscription, 'id', None) if subscription else None
),
)
else:
await self._notify_user(
user,
'WEBHOOK_SUB_DELETED',
reply_markup=self._get_renew_keyboard(user, getattr(subscription, 'id', None) if subscription else None),
reply_markup=self._get_renew_keyboard(
user, getattr(subscription, 'id', None) if subscription else None
),
)
async def _attempt_panel_recreation(self, db: AsyncSession, user: User, subscription: Subscription) -> bool:
@@ -1046,7 +1047,9 @@ class RemnaWaveWebhookService:
self, db: AsyncSession, user: User, subscription: Subscription | None, data: dict
) -> None:
sub_id = getattr(subscription, 'id', None) if subscription else None
await self._notify_user(user, 'WEBHOOK_SUB_EXPIRED_24H_AGO', reply_markup=self._get_renew_keyboard(user, sub_id))
await self._notify_user(
user, 'WEBHOOK_SUB_EXPIRED_24H_AGO', reply_markup=self._get_renew_keyboard(user, sub_id)
)
async def _handle_first_connected(
self, db: AsyncSession, user: User, subscription: Subscription | None, data: dict
@@ -1748,8 +1748,7 @@ async def _auto_add_traffic(
subscription = await get_subscription_by_id_for_user(db, parsed_sub_id, user.id) if parsed_sub_id else None
if subscription is None and parsed_sub_id:
logger.warning(
'Автопокупка трафика: subscription_id из корзины не найден у пользователя, '
'НЕ используем эвристику',
'Автопокупка трафика: subscription_id из корзины не найден у пользователя, НЕ используем эвристику',
saved_subscription_id=parsed_sub_id,
user_id=user.id,
)
@@ -2081,11 +2080,7 @@ async def try_auto_extend_expired_after_topup(
from app.database.crud.subscription import get_all_subscriptions_by_user_id
all_subs = await get_all_subscriptions_by_user_id(db, user.id)
expired_subs = [
s
for s in all_subs
if s.status == SubscriptionStatus.EXPIRED.value and not s.is_trial
]
expired_subs = [s for s in all_subs if s.status == SubscriptionStatus.EXPIRED.value and not s.is_trial]
if not expired_subs:
subscription = None
else:
@@ -2180,10 +2175,7 @@ async def try_auto_extend_expired_after_topup(
# modified in the last 60 seconds (indicates a concurrent renewal just landed).
try:
await db.refresh(subscription, attribute_names=['updated_at'])
if (
subscription.updated_at
and (datetime.now(UTC) - subscription.updated_at) < timedelta(seconds=60)
):
if subscription.updated_at and (datetime.now(UTC) - subscription.updated_at) < timedelta(seconds=60):
logger.info(
'🔄 Автопродление expired: пропуск — подписка обновлена секунд назад',
format_user_id=_format_user_id(user),
@@ -2524,10 +2516,7 @@ async def try_resume_disabled_daily_after_topup(
# was modified in the last 60 seconds (indicates a concurrent charge just landed).
try:
await db.refresh(subscription, attribute_names=['updated_at'])
if (
subscription.updated_at
and (datetime.now(UTC) - subscription.updated_at) < timedelta(seconds=60)
):
if subscription.updated_at and (datetime.now(UTC) - subscription.updated_at) < timedelta(seconds=60):
logger.info(
'🔄 Авто-возобновление daily: пропуск — подписка обновлена секунд назад',
format_user_id=_format_user_id(user),
+1 -3
View File
@@ -355,9 +355,7 @@ class UserCartService:
global_cart = await self.get_user_cart(user_id)
if global_cart and global_cart.get('subscription_id') is not None:
sub_id = global_cart['subscription_id']
already_covered = any(
c.get('subscription_id') == sub_id for c in results
)
already_covered = any(c.get('subscription_id') == sub_id for c in results)
if not already_covered:
results.append(global_cart)
except Exception as e:
+3 -1
View File
@@ -758,7 +758,9 @@ class UserService:
logger.info(
'✅ RemnaWave подписка восстановлена при разблокировке',
subscription_id=sub.id,
remnawave_uuid=sub.remnawave_uuid if settings.is_multi_tariff_enabled() else user.remnawave_uuid,
remnawave_uuid=sub.remnawave_uuid
if settings.is_multi_tariff_enabled()
else user.remnawave_uuid,
)
except Exception as e:
logger.error(