fix date_picker, fix filter, improve language selector

This commit is contained in:
Alexander Kalinovsky
2025-01-10 13:45:02 +01:00
parent 3898a333fa
commit ced47ac993
4 changed files with 20 additions and 12 deletions

View File

@@ -247,7 +247,7 @@ async def view_filter_edit(query: CallbackQuery, **kwargs):
if cmd == "clear":
await ViewSetting.set_filter(session = db_session, user_id = user.id, entity_name = entity_descriptor.class_name, filter = None)
context_data_bak = state_data.pop("context_data_bak")
context_data_bak = state_data.pop("context_data_bak", None)
if context_data_bak:
state_data["context_data"] = context_data_bak
@@ -270,7 +270,8 @@ async def view_filter_edit(query: CallbackQuery, **kwargs):
**kwargs)
else:
state_data.pop("context_data", None)
return await route_callback(message = query, back = False, **kwargs)
@@ -315,7 +316,7 @@ async def view_filter_edit_input(message: Message, **kwargs):
#state_data.pop("context_data")
#return await route_callback(message = message, back = False, **kwargs)
context_data_bak = state_data.pop("context_data_bak")
context_data_bak = state_data.pop("context_data_bak", None)
if context_data_bak:
state_data["context_data"] = context_data_bak
context_data = ContextData.unpack(context_data_bak)
@@ -336,6 +337,7 @@ async def view_filter_edit_input(message: Message, **kwargs):
else:
state_data.pop("context_data", None)
return await route_callback(message = message, back = False, **kwargs)

View File

@@ -109,6 +109,9 @@ async def date_picker_year(query: CallbackQuery,
start_date = datetime.strptime(callback_data.data, "%Y-%m-%d")
state_data = await state.get_data()
kwargs["state_data"] = state_data
keyboard_builder = InlineKeyboardBuilder()
keyboard_builder.row(InlineKeyboardButton(text = "🔼",
callback_data = ContextData(
@@ -117,8 +120,7 @@ async def date_picker_year(query: CallbackQuery,
entity_name = callback_data.entity_name,
entity_id = callback_data.entity_id,
field_name = callback_data.field_name,
data = start_date.replace(year = start_date.year - 20).strftime("%Y-%m-%d"),
save_state = True).pack()))
data = start_date.replace(year = start_date.year - 20).strftime("%Y-%m-%d")).pack()))
for r in range(4):
buttons = []
@@ -143,15 +145,14 @@ async def date_picker_year(query: CallbackQuery,
entity_name = callback_data.entity_name,
entity_id = callback_data.entity_id,
field_name = callback_data.field_name,
data = start_date.replace(year = start_date.year + 20).strftime("%Y-%m-%d"),
save_state = True).pack()))
data = start_date.replace(year = start_date.year + 20).strftime("%Y-%m-%d")).pack()))
field_descriptor = get_field_descriptor(app, callback_data)
await wrap_editor(keyboard_builder = keyboard_builder,
field_descriptor = field_descriptor,
callback_data = callback_data,
state = state)
state_data = state_data)
await query.message.edit_reply_markup(reply_markup = keyboard_builder.as_markup())
@@ -160,6 +161,9 @@ async def date_picker_year(query: CallbackQuery,
async def date_picker_month(query: CallbackQuery, callback_data: ContextData, app: "QBotApp", **kwargs):
field_descriptor = get_field_descriptor(app, callback_data)
state: FSMContext = kwargs["state"]
state_data = await state.get_data()
kwargs["state_data"] = state_data
await date_picker(query.message,
field_descriptor = field_descriptor,

View File

@@ -47,6 +47,8 @@ async def entity_list_callback(query: CallbackQuery, **kwargs):
await entity_list(message = query, navigation_stack = stack, **kwargs)
def calc_total_pages(items_count: int, page_size: int) -> int:
return max(items_count // page_size + (1 if items_count % page_size else 0), 1)
async def entity_list(message: CallbackQuery | Message,
callback_data: ContextData,
@@ -78,9 +80,6 @@ async def entity_list(message: CallbackQuery | Message,
page_size = await Settings.get(Settings.PAGE_SIZE)
entity_filter = await ViewSetting.get_filter(session = db_session, user_id = user.id, entity_name = entity_descriptor.class_name)
def calc_total_pages(items_count: int, page_size: int) -> int:
return max(items_count // page_size + (1 if items_count % page_size else 0), 1)
if issubclass(entity_type, OwnedBotEntity):
if EntityPermission.READ_ALL in user_permissions or EntityPermission.LIST_ALL in user_permissions:

View File

@@ -1,6 +1,7 @@
from aiogram import Router, F
from aiogram.types import Message, CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup
from aiogram.fsm.context import FSMContext
from aiogram.utils.i18n import I18n
from logging import getLogger
from sqlmodel.ext.asyncio.session import AsyncSession
@@ -69,7 +70,9 @@ async def set_language(message: CallbackQuery, **kwargs):
user.lang = LanguageBase(callback_data.data)
await db_session.commit()
await route_callback(message, **kwargs)
i18n: I18n = kwargs["i18n"]
with i18n.use_locale(user.lang):
await route_callback(message, **kwargs)
from ..navigation import pop_navigation_context, save_navigation_context