93 lines
3.4 KiB
Python
93 lines
3.4 KiB
Python
from aiogram import Router, F
|
|
from aiogram.filters import Command
|
|
from aiogram.fsm.context import FSMContext
|
|
from aiogram.types import Message, CallbackQuery, InlineKeyboardButton
|
|
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
|
from logging import getLogger
|
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
|
from ....model.settings import Settings
|
|
from ....model.user import UserBase
|
|
from ..context import ContextData, CallbackCommand
|
|
from ..common import get_send_message
|
|
|
|
|
|
logger = getLogger(__name__)
|
|
router = Router()
|
|
|
|
|
|
# @router.message(Command("menu"))
|
|
# async def command_menu(message: Message, **kwargs):
|
|
|
|
# await clear_state(state = kwargs["state"], clear_nav = True)
|
|
# callback_data = ContextData(command = CallbackCommand.MENU_ENTRY_MAIN)
|
|
# stack = await save_navigation_context(callback_data = callback_data, state = kwargs["state"])
|
|
# kwargs.update({"navigation_stack": stack, "callback_data": callback_data})
|
|
|
|
# await main_menu(message, **kwargs)
|
|
|
|
|
|
# @router.callback_query(CallbackData.filter(F.command == CallbackCommand.MENU_ENTRY))
|
|
# async def menu_entry(query: CallbackQuery, callback_data: CallbackData, user: UserBase, db_session: AsyncSession, app: QBotApp):
|
|
|
|
# pass
|
|
|
|
|
|
@router.callback_query(ContextData.filter(F.command == CallbackCommand.MENU_ENTRY_MAIN))
|
|
async def menu_entry_main(message: CallbackQuery, **kwargs):
|
|
|
|
stack = await save_navigation_context(callback_data = kwargs["callback_data"], state = kwargs["state"])
|
|
|
|
await main_menu(message, navigation_stack = stack, **kwargs)
|
|
|
|
|
|
async def main_menu(message: Message | CallbackQuery, navigation_stack: list[ContextData], **kwargs):
|
|
|
|
keyboard_builder = InlineKeyboardBuilder()
|
|
|
|
keyboard_builder.row(
|
|
InlineKeyboardButton(
|
|
text = (await Settings.get(Settings.APP_STRINGS_REFERENCES_BTN)),
|
|
callback_data = ContextData(command = CallbackCommand.MENU_ENTRY_ENTITIES).pack()))
|
|
|
|
|
|
keyboard_builder.row(
|
|
InlineKeyboardButton(
|
|
text = (await Settings.get(Settings.APP_STRINGS_SETTINGS_BTN)),
|
|
callback_data = ContextData(command = CallbackCommand.MENU_ENTRY_SETTINGS).pack()))
|
|
|
|
context = pop_navigation_context(navigation_stack)
|
|
if context:
|
|
keyboard_builder.row(
|
|
InlineKeyboardButton(
|
|
text = (await Settings.get(Settings.APP_STRINGS_BACK_BTN)),
|
|
callback_data = context.pack()))
|
|
|
|
send_message = get_send_message(message)
|
|
|
|
await send_message(text = (await Settings.get(Settings.APP_STRINGS_MAIN_NENU)),
|
|
reply_markup = keyboard_builder.as_markup())
|
|
|
|
|
|
from .entities import router as entities_router
|
|
from .settings import router as settings_router
|
|
from .parameters import router as parameters_router
|
|
from .language import router as language_router
|
|
from ..editors import router as editors_router
|
|
from ..forms.entity_list import router as entity_list_router
|
|
from ..forms.entity_form import router as entity_form_router
|
|
from ..common import router as common_router
|
|
from ..user_handlers import router as user_handlers_router
|
|
|
|
router.include_routers(
|
|
entities_router,
|
|
settings_router,
|
|
parameters_router,
|
|
language_router,
|
|
editors_router,
|
|
entity_list_router,
|
|
entity_form_router,
|
|
common_router,
|
|
user_handlers_router
|
|
)
|
|
|
|
from ..navigation import save_navigation_context, pop_navigation_context, clear_state |