Add files via upload

This commit is contained in:
Egor
2026-01-07 03:18:46 +03:00
committed by GitHub
parent 5355f41bef
commit 60a38d3ea6
2 changed files with 50 additions and 2 deletions

View File

@@ -195,6 +195,16 @@ def get_tariff_view_keyboard(
InlineKeyboardButton(text="👥 Промогруппы", callback_data=f"admin_tariff_edit_promo:{tariff.id}"),
])
# Переключение триала
if tariff.is_trial_available:
buttons.append([
InlineKeyboardButton(text="🎁 ❌ Убрать триал", callback_data=f"admin_tariff_toggle_trial:{tariff.id}")
])
else:
buttons.append([
InlineKeyboardButton(text="🎁 Сделать триальным", callback_data=f"admin_tariff_toggle_trial:{tariff.id}")
])
# Переключение активности
if tariff.is_active:
buttons.append([
@@ -413,6 +423,43 @@ async def toggle_tariff(
)
@admin_required
@error_handler
async def toggle_trial_tariff(
callback: types.CallbackQuery,
db_user: User,
db: AsyncSession,
):
"""Переключает тариф как триальный."""
from app.database.crud.tariff import set_trial_tariff, clear_trial_tariff
tariff_id = int(callback.data.split(":")[1])
tariff = await get_tariff_by_id(db, tariff_id)
if not tariff:
await callback.answer("Тариф не найден", show_alert=True)
return
if tariff.is_trial_available:
# Снимаем флаг триала
await clear_trial_tariff(db)
await callback.answer("Триал снят с тарифа", show_alert=True)
else:
# Устанавливаем этот тариф как триальный (снимает флаг с других)
await set_trial_tariff(db, tariff_id)
await callback.answer(f"Тариф «{tariff.name}» установлен как триальный", show_alert=True)
# Перезагружаем тариф
tariff = await get_tariff_by_id(db, tariff_id)
subs_count = await get_tariff_subscriptions_count(db, tariff_id)
await callback.message.edit_text(
format_tariff_info(tariff, db_user.language, subs_count),
reply_markup=get_tariff_view_keyboard(tariff, db_user.language),
parse_mode="HTML"
)
# ============ СОЗДАНИЕ ТАРИФА ============
@admin_required
@@ -1665,7 +1712,8 @@ def register_handlers(dp: Dispatcher):
# Просмотр и переключение
dp.callback_query.register(view_tariff, F.data.startswith("admin_tariff_view:"))
dp.callback_query.register(toggle_tariff, F.data.startswith("admin_tariff_toggle:"))
dp.callback_query.register(toggle_tariff, F.data.startswith("admin_tariff_toggle:") & ~F.data.startswith("admin_tariff_toggle_trial:"))
dp.callback_query.register(toggle_trial_tariff, F.data.startswith("admin_tariff_toggle_trial:"))
# Создание тарифа
dp.callback_query.register(start_create_tariff, F.data == "admin_tariff_create")

View File

@@ -5083,7 +5083,7 @@ async def show_admin_tariff_change(
return
# Получаем все активные тарифы
tariffs = await get_all_tariffs(db, only_active=True)
tariffs = await get_all_tariffs(db, include_inactive=False)
if not tariffs:
await callback.message.edit_text(