add ruff format, ruff check, time_picker, project structure and imports reorganized
This commit is contained in:
48
bot/handlers/common/routing.py
Normal file
48
bot/handlers/common/routing.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from aiogram.types import Message, CallbackQuery
|
||||
from ..context import CallbackCommand
|
||||
|
||||
from ..navigation import (
|
||||
get_navigation_context,
|
||||
save_navigation_context,
|
||||
pop_navigation_context,
|
||||
)
|
||||
|
||||
import qbot.bot.handlers.menu.main as menu_main
|
||||
import qbot.bot.handlers.menu.settings as menu_settings
|
||||
import qbot.bot.handlers.menu.parameters as menu_parameters
|
||||
import qbot.bot.handlers.menu.language as menu_language
|
||||
import qbot.bot.handlers.menu.entities as menu_entities
|
||||
import qbot.bot.handlers.forms.entity_list as form_list
|
||||
import qbot.bot.handlers.forms.entity_form as form_item
|
||||
import qbot.bot.handlers.editors.main as editor
|
||||
|
||||
|
||||
async def route_callback(message: Message | CallbackQuery, back: bool = True, **kwargs):
|
||||
state_data = kwargs["state_data"]
|
||||
stack, context = get_navigation_context(state_data)
|
||||
if back:
|
||||
context = pop_navigation_context(stack)
|
||||
stack = save_navigation_context(callback_data=context, state_data=state_data)
|
||||
kwargs.update({"callback_data": context, "navigation_stack": stack})
|
||||
if context:
|
||||
if context.command == CallbackCommand.MENU_ENTRY_MAIN:
|
||||
await menu_main.main_menu(message, **kwargs)
|
||||
elif context.command == CallbackCommand.MENU_ENTRY_SETTINGS:
|
||||
await menu_settings.settings_menu(message, **kwargs)
|
||||
elif context.command == CallbackCommand.MENU_ENTRY_PARAMETERS:
|
||||
await menu_parameters.parameters_menu(message, **kwargs)
|
||||
elif context.command == CallbackCommand.MENU_ENTRY_LANGUAGE:
|
||||
await menu_language.language_menu(message, **kwargs)
|
||||
elif context.command == CallbackCommand.MENU_ENTRY_ENTITIES:
|
||||
await menu_entities.entities_menu(message, **kwargs)
|
||||
elif context.command == CallbackCommand.ENTITY_LIST:
|
||||
await form_list.entity_list(message, **kwargs)
|
||||
elif context.command == CallbackCommand.ENTITY_ITEM:
|
||||
await form_item.entity_item(message, **kwargs)
|
||||
elif context.command == CallbackCommand.FIELD_EDITOR:
|
||||
await editor.field_editor(message, **kwargs)
|
||||
|
||||
else:
|
||||
raise ValueError(f"Unknown command {context.command}")
|
||||
else:
|
||||
raise ValueError("No navigation context")
|
||||
Reference in New Issue
Block a user