From 5de8cac43e185fb48e1bab08dbf83f6a24531e67 Mon Sep 17 00:00:00 2001 From: kolo Date: Sat, 3 Jan 2026 23:11:53 +0300 Subject: [PATCH] commit --- .../application/bot/user_dialogs/take_test.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/trudex/application/bot/user_dialogs/take_test.py b/src/trudex/application/bot/user_dialogs/take_test.py index a103687..8b3b349 100644 --- a/src/trudex/application/bot/user_dialogs/take_test.py +++ b/src/trudex/application/bot/user_dialogs/take_test.py @@ -63,8 +63,7 @@ async def on_start_test( active_attempt = await attempt_repo.get_active_attempt(user_id, test_id) if active_attempt: - await _callback.answer("❌ У вас уже есть активная попытка") - return + await attempt_repo.attempt_dao.delete(active_attempt.id) if test.password: await manager.start(UserTestSG.password_input, mode=StartMode.NORMAL, data={"test_id": test_id}) @@ -139,7 +138,19 @@ async def on_password_input( await message.answer("❌ Неверный пароль") -async def on_cancel_test(_callback: CallbackQuery, _button: Button, manager: DialogManager): +@inject +async def on_cancel_test( + _callback: CallbackQuery, + _button: Button, + manager: DialogManager, + attempt_repo: FromDishka[TestAttemptRepository], +): + start_data = manager.start_data or {} + attempt_id = manager.dialog_data.get("attempt_id") or start_data.get("attempt_id") + + if attempt_id: + await attempt_repo.attempt_dao.delete(attempt_id) + await _callback.answer("Тест отменен") await manager.start(UserMenuSG.available_tests, mode=StartMode.RESET_STACK)