changing the logic of the fare selection button
This commit is contained in:
+16
-13
@@ -29,7 +29,6 @@ from database.notifications import check_hot_lead_discount
|
||||
from database.tariffs import create_subgroup_hash, find_subgroup_by_hash, get_tariffs
|
||||
from handlers.admin.panel.keyboard import AdminPanelCallback
|
||||
from handlers.buttons import MAIN_MENU
|
||||
from handlers.payments.currency_rates import format_for_user
|
||||
from handlers.texts import (
|
||||
CREATING_CONNECTION_MSG,
|
||||
DISCOUNT_OFFER_MESSAGE,
|
||||
@@ -43,6 +42,7 @@ from hooks.processors import (
|
||||
process_purchase_tariff_group_override,
|
||||
process_tariff_menu,
|
||||
)
|
||||
from .utils import add_tariff_button_generic
|
||||
from logger import logger
|
||||
|
||||
from .key_mode.key_cluster_mode import key_cluster_mode
|
||||
@@ -235,12 +235,13 @@ async def handle_key_creation(
|
||||
builder = InlineKeyboardBuilder()
|
||||
|
||||
for tariff in grouped_tariffs.get(None, []):
|
||||
price_text = await format_for_user(session, tg_id, tariff.get("price_rub", 0), language_code)
|
||||
builder.row(
|
||||
InlineKeyboardButton(
|
||||
text=f"{tariff['name']} — {price_text}",
|
||||
callback_data=f"select_tariff_plan|{tariff['id']}",
|
||||
)
|
||||
await add_tariff_button_generic(
|
||||
builder=builder,
|
||||
tariff=tariff,
|
||||
session=session,
|
||||
tg_id=tg_id,
|
||||
language_code=language_code,
|
||||
callback_prefix="select_tariff_plan",
|
||||
)
|
||||
|
||||
sorted_subgroups = sorted(
|
||||
@@ -335,13 +336,15 @@ async def show_tariffs_in_subgroup_user(callback: CallbackQuery, state: FSMConte
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
for tariff in filtered:
|
||||
price_text = await format_for_user(session, tg_id, tariff.get("price_rub", 0), language_code)
|
||||
builder.row(
|
||||
InlineKeyboardButton(
|
||||
text=f"{tariff['name']} — {price_text}",
|
||||
callback_data=f"select_tariff_plan|{tariff['id']}",
|
||||
)
|
||||
await add_tariff_button_generic(
|
||||
builder=builder,
|
||||
tariff=tariff,
|
||||
session=session,
|
||||
tg_id=tg_id,
|
||||
language_code=language_code,
|
||||
callback_prefix="select_tariff_plan",
|
||||
)
|
||||
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="back_to_tariff_group_list"))
|
||||
builder.row(InlineKeyboardButton(text=MAIN_MENU, callback_data="profile"))
|
||||
|
||||
|
||||
+15
-20
@@ -53,6 +53,7 @@ from hooks.processors import (
|
||||
process_renewal_complete,
|
||||
process_renewal_forbidden_groups,
|
||||
)
|
||||
from .utils import add_tariff_button_generic
|
||||
from logger import logger
|
||||
|
||||
|
||||
@@ -166,16 +167,13 @@ async def process_callback_renew_key(callback_query: CallbackQuery, state: FSMCo
|
||||
language_code = getattr(callback_query.from_user, "language_code", None)
|
||||
|
||||
for t in grouped_tariffs.get(None, []):
|
||||
price_text = await format_for_user(session, tg_id, t["price_rub"], language_code)
|
||||
if t.get("configurable"):
|
||||
button_text = f"{t['name']} — от {price_text}"
|
||||
else:
|
||||
button_text = f"{t['name']} — {price_text}"
|
||||
builder.row(
|
||||
InlineKeyboardButton(
|
||||
text=button_text,
|
||||
callback_data=f"renew_plan|{t['id']}",
|
||||
)
|
||||
await add_tariff_button_generic(
|
||||
builder=builder,
|
||||
tariff=t,
|
||||
session=session,
|
||||
tg_id=tg_id,
|
||||
language_code=language_code,
|
||||
callback_prefix="renew_plan",
|
||||
)
|
||||
|
||||
sorted_subgroups = sorted(
|
||||
@@ -324,16 +322,13 @@ async def show_tariffs_in_renew_subgroup(callback: CallbackQuery, state: FSMCont
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
for t in filtered:
|
||||
price_txt = await format_for_user(session, tg_id, t.get("price_rub", 0), language_code)
|
||||
if t.get("configurable"):
|
||||
button_text = f"{t['name']} — от {price_txt}"
|
||||
else:
|
||||
button_text = f"{t['name']} — {price_txt}"
|
||||
builder.row(
|
||||
InlineKeyboardButton(
|
||||
text=button_text,
|
||||
callback_data=f"renew_plan|{t['id']}",
|
||||
)
|
||||
await add_tariff_button_generic(
|
||||
builder=builder,
|
||||
tariff=t,
|
||||
session=session,
|
||||
tg_id=tg_id,
|
||||
language_code=language_code,
|
||||
callback_prefix="renew_plan",
|
||||
)
|
||||
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data=f"renew_key|{key_name}"))
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
from typing import Any
|
||||
|
||||
from aiogram.types import InlineKeyboardButton
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from handlers.payments.currency_rates import format_for_user
|
||||
|
||||
|
||||
async def add_tariff_button_generic(
|
||||
builder: InlineKeyboardBuilder,
|
||||
tariff: dict[str, Any],
|
||||
session: AsyncSession,
|
||||
tg_id: int,
|
||||
language_code: str | None,
|
||||
callback_prefix: str,
|
||||
):
|
||||
"""Добавляет кнопку тарифа с учётом конфигуратора."""
|
||||
is_configurable = bool(tariff.get("configurable"))
|
||||
if is_configurable:
|
||||
button_text = tariff["name"]
|
||||
else:
|
||||
price_rub = float(tariff.get("price_rub") or 0)
|
||||
price_text = await format_for_user(session, tg_id, price_rub, language_code)
|
||||
button_text = f"{tariff['name']} — {price_text}"
|
||||
|
||||
builder.row(
|
||||
InlineKeyboardButton(
|
||||
text=button_text,
|
||||
callback_data=f"{callback_prefix}|{tariff['id']}",
|
||||
)
|
||||
)
|
||||
Binary file not shown.
Reference in New Issue
Block a user