refactoring
This commit is contained in:
@@ -7,21 +7,24 @@ from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
from ....model.descriptors import EntityFieldDescriptor, EntityDescriptor
|
||||
from ....model.settings import Settings
|
||||
from ..context import ContextData, CallbackCommand, CommandContext
|
||||
from ..navigation import get_navigation_context
|
||||
from ..navigation import get_navigation_context, pop_navigation_context
|
||||
|
||||
|
||||
async def wrap_editor(keyboard_builder: InlineKeyboardBuilder,
|
||||
field_descriptor: EntityFieldDescriptor,
|
||||
entity_descriptor: EntityDescriptor,
|
||||
callback_data: ContextData,
|
||||
state: FSMContext):
|
||||
state_data: dict):
|
||||
|
||||
if callback_data.context in [CommandContext.ENTITY_CREATE, CommandContext.ENTITY_EDIT]:
|
||||
if callback_data.context in [CommandContext.ENTITY_CREATE, CommandContext.ENTITY_EDIT, CommandContext.ENTITY_FIELD_EDIT]:
|
||||
|
||||
btns = []
|
||||
field_index = entity_descriptor.field_sequence.index(field_descriptor.name)
|
||||
entity_descriptor = field_descriptor.entity_descriptor
|
||||
field_index = (entity_descriptor.field_sequence.index(field_descriptor.name)
|
||||
if callback_data.context in [CommandContext.ENTITY_CREATE, CommandContext.ENTITY_EDIT]
|
||||
else 0)
|
||||
|
||||
stack, context = await get_navigation_context(state)
|
||||
stack, context = get_navigation_context(state_data = state_data)
|
||||
context = pop_navigation_context(stack)
|
||||
|
||||
if field_index > 0:
|
||||
btns.append(InlineKeyboardButton(
|
||||
@@ -31,21 +34,18 @@ async def wrap_editor(keyboard_builder: InlineKeyboardBuilder,
|
||||
context = callback_data.context,
|
||||
entity_name = callback_data.entity_name,
|
||||
entity_id = callback_data.entity_id,
|
||||
field_name = entity_descriptor.field_sequence[field_index - 1],
|
||||
save_state = True).pack()))
|
||||
field_name = entity_descriptor.field_sequence[field_index - 1]).pack()))
|
||||
|
||||
if get_origin(field_descriptor.type_) == UnionType:
|
||||
args = get_args(field_descriptor.type_)
|
||||
if args[1] == NoneType:
|
||||
btns.append(InlineKeyboardButton(
|
||||
text = (await Settings.get(Settings.APP_STRINGS_SKIP_BTN)),
|
||||
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,
|
||||
save_state = True).pack()))
|
||||
if field_descriptor.is_optional:
|
||||
btns.append(InlineKeyboardButton(
|
||||
text = (await Settings.get(Settings.APP_STRINGS_SKIP_BTN)),
|
||||
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 = "skip").pack()))
|
||||
|
||||
keyboard_builder.row(*btns)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user