fix date_picker, fix filter, improve language selector
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user