62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
from datetime import date
|
|
|
|
from aiogram.types import CallbackQuery
|
|
from aiogram_dialog import DialogManager
|
|
from aiogram_dialog.widgets.input import ManagedTextInput
|
|
from aiogram_dialog.widgets.kbd import Button, Calendar
|
|
|
|
from app.infrastructure.database.crud import create_event
|
|
|
|
|
|
async def input_title(
|
|
callback: CallbackQuery,
|
|
widget: ManagedTextInput,
|
|
manager: DialogManager,
|
|
text: date,
|
|
):
|
|
if "event_obj" not in manager.dialog_data:
|
|
manager.dialog_data["event_obj"] = {}
|
|
manager.dialog_data["event_obj"]["title"] = text
|
|
await manager.next()
|
|
|
|
|
|
async def input_description(
|
|
callback: CallbackQuery,
|
|
widget: ManagedTextInput,
|
|
manager: DialogManager,
|
|
text: date,
|
|
):
|
|
manager.dialog_data["event_obj"]["description"] = text
|
|
await manager.next()
|
|
|
|
|
|
async def input_start_date(
|
|
callback: CallbackQuery,
|
|
widget: Calendar,
|
|
manager: DialogManager,
|
|
selected_date: date,
|
|
):
|
|
manager.dialog_data["event_obj"]["start_date"] = selected_date
|
|
await manager.next()
|
|
|
|
|
|
async def input_end_date(
|
|
callback: CallbackQuery,
|
|
widget: Calendar,
|
|
manager: DialogManager,
|
|
selected_date: date,
|
|
):
|
|
manager.dialog_data["event_obj"]["end_date"] = selected_date
|
|
await manager.next()
|
|
|
|
|
|
async def confirm_creation(
|
|
callback: CallbackQuery,
|
|
button: Button,
|
|
manager: DialogManager,
|
|
):
|
|
await create_event(
|
|
manager.middleware_data["session"], **manager.dialog_data["event_obj"]
|
|
)
|
|
await manager.done()
|