tariff id in callback

This commit is contained in:
Vladless
2025-05-19 06:03:03 +03:00
parent ae39b6df9a
commit fd3e26dd47
2 changed files with 31 additions and 15 deletions
+24 -11
View File
@@ -905,9 +905,9 @@ async def handle_cluster_transfer(callback_query: CallbackQuery, state: FSMConte
async def show_tariff_group_selection(callback: CallbackQuery, callback_data: AdminClusterCallback, session):
cluster_name = callback_data.data
rows = await session.fetch(
"SELECT DISTINCT group_code FROM tariffs WHERE group_code IS NOT NULL ORDER BY group_code"
"SELECT DISTINCT ON (group_code) id, group_code FROM tariffs WHERE group_code IS NOT NULL ORDER BY group_code"
)
groups = [r["group_code"] for r in rows]
groups = [(r["id"], r["group_code"]) for r in rows]
if not groups:
await callback.message.edit_text("❌ Нет доступных тарифных групп.")
@@ -922,14 +922,27 @@ async def show_tariff_group_selection(callback: CallbackQuery, callback_data: Ad
@router.callback_query(AdminClusterCallback.filter(F.action == "apply_tariff_group"), IsAdminFilter())
async def apply_tariff_group(callback: CallbackQuery, callback_data: AdminClusterCallback, session):
try:
cluster_name, group_code = callback_data.data.split("|", 1)
except ValueError:
await callback.message.edit_text("❌ Неверные данные.")
return
cluster_name, group_id = callback_data.data.split("|", 1)
group_id = int(group_id)
await session.execute("UPDATE servers SET tariff_group = $1 WHERE cluster_name = $2", group_code, cluster_name)
row = await session.fetchrow("SELECT group_code FROM tariffs WHERE id = $1", group_id)
if not row:
await callback.message.edit_text("❌ Тарифная группа не найдена.")
return
await callback.message.edit_text(
f"✅ Для кластера <code>{cluster_name}</code> установлена тарифная группа: <b>{group_code}</b>",
reply_markup=build_cluster_management_kb(cluster_name),
)
group_code = row["group_code"]
await session.execute(
"UPDATE servers SET tariff_group = $1 WHERE cluster_name = $2",
group_code,
cluster_name,
)
await callback.message.edit_text(
f"✅ Для кластера <code>{cluster_name}</code> установлена тарифная группа: <b>{group_code}</b>",
reply_markup=build_cluster_management_kb(cluster_name),
)
except Exception as e:
logger.error(f"Ошибка при применении тарифной группы: {e}")
await callback.message.edit_text("❌ Произошла ошибка при установке тарифной группы.")
+7 -4
View File
@@ -136,12 +136,15 @@ def build_panel_type_kb() -> InlineKeyboardMarkup:
return builder.as_markup()
def build_tariff_group_selection_kb(cluster_name: str, groups: list[str]) -> InlineKeyboardMarkup:
def build_tariff_group_selection_kb(cluster_name: str, groups: list[tuple[int, str]]) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
for group in groups:
for group_id, group_code in groups:
builder.button(
text=group,
callback_data=AdminClusterCallback(action="apply_tariff_group", data=f"{cluster_name}|{group}").pack(),
text=group_code,
callback_data=AdminClusterCallback(
action="apply_tariff_group",
data=f"{cluster_name}|{group_id}"
).pack(),
)
builder.row(
InlineKeyboardButton(