gift rate configurator

This commit is contained in:
Vladless
2025-12-06 01:54:05 +03:00
parent c661a9b2f6
commit a8754fc40e
5 changed files with 24 additions and 5 deletions
+11 -1
View File
@@ -18,6 +18,9 @@ async def store_gift_link(
tariff_id: int | None = None,
is_unlimited: bool = False,
max_usages: int | None = None,
selected_device_limit: int | None = None,
selected_traffic_gb: int | None = None,
selected_price_rub: int | None = None,
):
try:
stmt = insert(Gift).values(
@@ -32,10 +35,17 @@ async def store_gift_link(
tariff_id=tariff_id,
is_unlimited=is_unlimited,
max_usages=max_usages,
selected_device_limit=selected_device_limit,
selected_traffic_gb=selected_traffic_gb,
selected_price_rub=selected_price_rub,
)
await session.execute(stmt)
await session.commit()
logger.info(f"🎁 Подарок {gift_id} сохранён (tariff_id={tariff_id}, max_usages={max_usages})")
logger.info(
f"🎁 Подарок {gift_id} сохранён "
f"(tariff_id={tariff_id}, max_usages={max_usages}, "
f"device={selected_device_limit}, traffic={selected_traffic_gb}, price={selected_price_rub})"
)
return True
except SQLAlchemyError as e:
logger.error(f"❌ Ошибка при сохранении подарка {gift_id}: {e}")
+4
View File
@@ -224,6 +224,10 @@ class Gift(DictLikeMixin, Base):
max_usages = Column(Integer, nullable=True)
tariff_id: Mapped[int | None] = mapped_column(ForeignKey("tariffs.id"))
selected_device_limit = Column(Integer, nullable=True)
selected_traffic_gb = Column(Integer, nullable=True)
selected_price_rub = Column(Integer, nullable=True)
class GiftUsage(DictLikeMixin, Base):
__tablename__ = "gift_usages"
+9 -4
View File
@@ -36,10 +36,15 @@ async def handle_servers(callback_query: CallbackQuery, session: AsyncSession):
"<i>⚠️ <b>Важно:</b> Кластеры удаляются автоматически, если удалить все серверы внутри них.</i>\n\n"
)
await callback_query.message.edit_text(
text=text,
reply_markup=build_clusters_editor_kb(servers),
)
message = callback_query.message
markup = build_clusters_editor_kb(servers)
if message and message.text:
await message.edit_text(text=text, reply_markup=markup)
elif message and message.caption:
await message.edit_caption(caption=text, reply_markup=markup)
else:
await message.answer(text=text, reply_markup=markup)
@router.callback_query(AdminClusterCallback.filter(F.action == "add"), IsAdminFilter())