diff --git a/src/trudex/application/bot/admin_dialogs/templates.py b/src/trudex/application/bot/admin_dialogs/templates.py
index 976488c..ea9f0df 100644
--- a/src/trudex/application/bot/admin_dialogs/templates.py
+++ b/src/trudex/application/bot/admin_dialogs/templates.py
@@ -53,11 +53,11 @@ async def get_tests_for_export(test_dao: FromDishka[TestDAO], **_kwargs):
@inject
async def on_test_selected_for_export(
_callback: CallbackQuery,
- _widget: Select,
+ _widget: Select, # type: ignore[type-arg]
_manager: DialogManager,
item_id: str,
test_repo: FromDishka[TestRepository],
-):
+) -> None:
test_id = int(item_id)
test, questions_with_options = await test_repo.get_full_test(test_id)
@@ -70,6 +70,7 @@ async def on_test_selected_for_export(
"description": test.description,
"password": test.password,
"attempts": test.attempts,
+ "expires_at": test.expires_at.isoformat() if test.expires_at else None,
"for_group": test.for_group,
"questions": [],
}
@@ -102,7 +103,7 @@ async def on_test_selected_for_export(
assert _callback.message is not None
await _callback.message.answer_document(
document=BufferedInputFile(json_str.encode("utf-8"), filename=filename),
- caption=f"📤 Экспорт теста\n\n📝 {test.title}",
+ caption=f"📤 Экспорт теста: {test.title}",
)
@@ -125,7 +126,7 @@ templates_dialog = Dialog(
id="test_select",
item_id_getter=lambda x: x[1],
items="tests",
- on_click=on_test_selected_for_export,
+ on_click=on_test_selected_for_export, # type: ignore[arg-type]
),
id="tests_scroll",
width=1,
diff --git a/src/trudex/application/bot/creator_dialogs/templates.py b/src/trudex/application/bot/creator_dialogs/templates.py
index 28b88a4..ba21d49 100644
--- a/src/trudex/application/bot/creator_dialogs/templates.py
+++ b/src/trudex/application/bot/creator_dialogs/templates.py
@@ -53,11 +53,11 @@ async def get_tests_for_export(test_dao: FromDishka[TestDAO], **_kwargs):
@inject
async def on_test_selected_for_export(
_callback: CallbackQuery,
- _widget: Select,
+ _widget: Select, # type: ignore[type-arg]
_manager: DialogManager,
item_id: str,
test_repo: FromDishka[TestRepository],
-):
+) -> None:
test_id = int(item_id)
test, questions_with_options = await test_repo.get_full_test(test_id)
@@ -65,17 +65,20 @@ async def on_test_selected_for_export(
await _callback.answer("❌ Тест не найден")
return
- export_data = {
+ export_data: dict = {
"title": test.title,
"description": test.description,
"password": test.password,
"attempts": test.attempts,
+ "expires_at": test.expires_at.isoformat() if test.expires_at else None,
"for_group": test.for_group,
"questions": [],
}
+ questions_list: list = export_data["questions"]
+
for question, options in questions_with_options:
- question_data = {
+ question_data: dict = {
"text": question.text,
"question_type": question.question_type,
}
@@ -90,7 +93,7 @@ async def on_test_selected_for_export(
for o in options
]
- export_data["questions"].append(question_data)
+ questions_list.append(question_data)
json_str = json.dumps(export_data, ensure_ascii=False, indent=2)
@@ -100,7 +103,7 @@ async def on_test_selected_for_export(
assert _callback.message is not None
await _callback.message.answer_document(
document=BufferedInputFile(json_str.encode("utf-8"), filename=filename),
- caption=f"📤 Экспорт теста\n\n📝 {test.title}",
+ caption=f"📤 Экспорт теста: {test.title}",
)
@@ -123,7 +126,7 @@ templates_dialog = Dialog(
id="test_select",
item_id_getter=lambda x: x[1],
items="tests",
- on_click=on_test_selected_for_export,
+ on_click=on_test_selected_for_export, # type: ignore[arg-type]
),
id="tests_scroll",
width=1,