71 lines
2.8 KiB
Python
71 lines
2.8 KiB
Python
from aiogram import Router
|
|
from aiogram.fsm.context import FSMContext
|
|
from aiogram.types import Message, CallbackQuery, InlineKeyboardButton
|
|
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
|
from babel.support import LazyProxy
|
|
from logging import getLogger
|
|
|
|
from ....model.descriptors import EntityFieldDescriptor, EntityDescriptor
|
|
from ..context import ContextData, CallbackCommand
|
|
from ..common import get_send_message
|
|
from .common import wrap_editor
|
|
|
|
|
|
logger = getLogger(__name__)
|
|
router = Router()
|
|
|
|
|
|
async def bool_editor(message: Message | CallbackQuery,
|
|
edit_prompt: str,
|
|
entity_descriptor: EntityDescriptor,
|
|
field_descriptor: EntityFieldDescriptor,
|
|
callback_data: ContextData,
|
|
**kwargs):
|
|
|
|
keyboard_builder = InlineKeyboardBuilder()
|
|
|
|
if isinstance(field_descriptor.bool_true_value_btn, LazyProxy):
|
|
true_caption = field_descriptor.bool_true_value_btn.value
|
|
else:
|
|
true_caption = field_descriptor.bool_true_value_btn
|
|
|
|
if isinstance(field_descriptor.bool_false_value_btn, LazyProxy):
|
|
false_caption = field_descriptor.bool_false_value_btn.value
|
|
else:
|
|
false_caption = field_descriptor.bool_false_value_btn
|
|
|
|
keyboard_builder.row(
|
|
InlineKeyboardButton(text = true_caption,
|
|
callback_data = ContextData(
|
|
command = CallbackCommand.FIELD_EDITOR_CALLBACK,
|
|
context = callback_data.context,
|
|
entity_name = callback_data.entity_name,
|
|
entity_id = callback_data.entity_id,
|
|
field_name = callback_data.field_name,
|
|
data = str(True),
|
|
save_state = True).pack()),
|
|
InlineKeyboardButton(text = false_caption,
|
|
callback_data = ContextData(
|
|
command = CallbackCommand.FIELD_EDITOR_CALLBACK,
|
|
context = callback_data.context,
|
|
entity_name = callback_data.entity_name,
|
|
entity_id = callback_data.entity_id,
|
|
field_name = callback_data.field_name,
|
|
data = str(False),
|
|
save_state = True).pack())
|
|
)
|
|
|
|
await wrap_editor(keyboard_builder = keyboard_builder,
|
|
field_descriptor = field_descriptor,
|
|
entity_descriptor = entity_descriptor,
|
|
callback_data = callback_data,
|
|
state = kwargs["state"])
|
|
|
|
send_message = get_send_message(message)
|
|
|
|
await send_message(text = edit_prompt, reply_markup = keyboard_builder.as_markup())
|
|
|
|
|
|
|
|
|
|
|