diff --git a/database/gifts.py b/database/gifts.py index 530381c2..da6be385 100644 --- a/database/gifts.py +++ b/database/gifts.py @@ -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}") diff --git a/database/models.py b/database/models.py index c07a4db0..52f251a8 100644 --- a/database/models.py +++ b/database/models.py @@ -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" diff --git a/handlers/admin/clusters/cluster_wizard.py b/handlers/admin/clusters/cluster_wizard.py index a221bb97..aaf1c5cb 100644 --- a/handlers/admin/clusters/cluster_wizard.py +++ b/handlers/admin/clusters/cluster_wizard.py @@ -36,10 +36,15 @@ async def handle_servers(callback_query: CallbackQuery, session: AsyncSession): "⚠️ Важно: Кластеры удаляются автоматически, если удалить все серверы внутри них.\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()) diff --git a/handlers/payments/gift.cpython-312-x86_64-linux-gnu.so b/handlers/payments/gift.cpython-312-x86_64-linux-gnu.so index cc878716..4431cc14 100644 Binary files a/handlers/payments/gift.cpython-312-x86_64-linux-gnu.so and b/handlers/payments/gift.cpython-312-x86_64-linux-gnu.so differ diff --git a/handlers/payments/utils.cpython-312-x86_64-linux-gnu.so b/handlers/payments/utils.cpython-312-x86_64-linux-gnu.so index 48203691..ab2c4b7b 100644 Binary files a/handlers/payments/utils.cpython-312-x86_64-linux-gnu.so and b/handlers/payments/utils.cpython-312-x86_64-linux-gnu.so differ