helpy_botik / app /handlers /admin /view_tests.py
Zlovoblachko's picture
Add application file
339f372
from aiogram import Router, F
from aiogram.types import Message, CallbackQuery
from aiogram.fsm.context import FSMContext
from app.database import requests as rq
from app.keyboards import admin_keyboards as kb
from app.database.requests import get_user_test_results, get_all_test_answers
from app.states import TestStates
from app.middleware.authentification import admin_check
router = Router()
@router.message(F.text == "Просмотреть результаты тестов")
async def name_provide(message: Message, state: FSMContext):
if not await admin_check(message, {}):
await message.answer("У вас нет доступа к админ-панели")
return
await state.set_state(TestStates.name_get)
await message.answer("Введите имя пользователя, результаты тестов которого хотите посмотреть. Для просмотра результатов теста пользователь должен быть зарегистрирован!")
@router.message(TestStates.name_get)
async def show_user_results(message: Message, state: FSMContext):
results = await get_user_test_results(message.text)
if isinstance(results, str):
await message.answer(results, reply_markup=kb.admin_main)
return
if not results:
await message.answer(
"📊 У пользователя пока нет результатов тестов",
reply_markup=kb.admin_main
)
return
response = f"📋 Результаты тестов пользователя {message.text}:\n\n"
for result in results:
completed_date = result['completed_at'].strftime("%d.%m.%Y %H:%M")
response += (
f"🔷 Тест: {result['test_name']}\n"
f"📅 Дата прохождения: {completed_date}\n"
f"📊 Набрано баллов: {result['score'] if result['score'] is not None else 'Нет баллов'}\n"
f"📝 Результат: {result['result'] if result['result'] else 'Не определен'}\n"
f"{'─' * 30}\n\n"
)
await message.answer(
response,
reply_markup=kb.admin_main,
parse_mode="HTML"
)
@router.callback_query(F.data == 'admin_to_main')
async def return_to_main(callback: CallbackQuery):
await callback.answer('Возвращаемся в меню')
await callback.message.answer('Здравствуйте! Что Вы хотите сделать?', reply_markup=kb.admin_main)