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":
|
if cmd == "clear":
|
||||||
await ViewSetting.set_filter(session = db_session, user_id = user.id, entity_name = entity_descriptor.class_name, filter = None)
|
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:
|
if context_data_bak:
|
||||||
|
|
||||||
state_data["context_data"] = context_data_bak
|
state_data["context_data"] = context_data_bak
|
||||||
@@ -270,7 +270,8 @@ async def view_filter_edit(query: CallbackQuery, **kwargs):
|
|||||||
**kwargs)
|
**kwargs)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
|
state_data.pop("context_data", None)
|
||||||
return await route_callback(message = query, back = False, **kwargs)
|
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")
|
#state_data.pop("context_data")
|
||||||
#return await route_callback(message = message, back = False, **kwargs)
|
#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:
|
if context_data_bak:
|
||||||
state_data["context_data"] = context_data_bak
|
state_data["context_data"] = context_data_bak
|
||||||
context_data = ContextData.unpack(context_data_bak)
|
context_data = ContextData.unpack(context_data_bak)
|
||||||
@@ -336,6 +337,7 @@ async def view_filter_edit_input(message: Message, **kwargs):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
|
state_data.pop("context_data", None)
|
||||||
return await route_callback(message = message, back = False, **kwargs)
|
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")
|
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 = InlineKeyboardBuilder()
|
||||||
keyboard_builder.row(InlineKeyboardButton(text = "🔼",
|
keyboard_builder.row(InlineKeyboardButton(text = "🔼",
|
||||||
callback_data = ContextData(
|
callback_data = ContextData(
|
||||||
@@ -117,8 +120,7 @@ async def date_picker_year(query: CallbackQuery,
|
|||||||
entity_name = callback_data.entity_name,
|
entity_name = callback_data.entity_name,
|
||||||
entity_id = callback_data.entity_id,
|
entity_id = callback_data.entity_id,
|
||||||
field_name = callback_data.field_name,
|
field_name = callback_data.field_name,
|
||||||
data = start_date.replace(year = start_date.year - 20).strftime("%Y-%m-%d"),
|
data = start_date.replace(year = start_date.year - 20).strftime("%Y-%m-%d")).pack()))
|
||||||
save_state = True).pack()))
|
|
||||||
|
|
||||||
for r in range(4):
|
for r in range(4):
|
||||||
buttons = []
|
buttons = []
|
||||||
@@ -143,15 +145,14 @@ async def date_picker_year(query: CallbackQuery,
|
|||||||
entity_name = callback_data.entity_name,
|
entity_name = callback_data.entity_name,
|
||||||
entity_id = callback_data.entity_id,
|
entity_id = callback_data.entity_id,
|
||||||
field_name = callback_data.field_name,
|
field_name = callback_data.field_name,
|
||||||
data = start_date.replace(year = start_date.year + 20).strftime("%Y-%m-%d"),
|
data = start_date.replace(year = start_date.year + 20).strftime("%Y-%m-%d")).pack()))
|
||||||
save_state = True).pack()))
|
|
||||||
|
|
||||||
field_descriptor = get_field_descriptor(app, callback_data)
|
field_descriptor = get_field_descriptor(app, callback_data)
|
||||||
|
|
||||||
await wrap_editor(keyboard_builder = keyboard_builder,
|
await wrap_editor(keyboard_builder = keyboard_builder,
|
||||||
field_descriptor = field_descriptor,
|
field_descriptor = field_descriptor,
|
||||||
callback_data = callback_data,
|
callback_data = callback_data,
|
||||||
state = state)
|
state_data = state_data)
|
||||||
|
|
||||||
await query.message.edit_reply_markup(reply_markup = keyboard_builder.as_markup())
|
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):
|
async def date_picker_month(query: CallbackQuery, callback_data: ContextData, app: "QBotApp", **kwargs):
|
||||||
|
|
||||||
field_descriptor = get_field_descriptor(app, callback_data)
|
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,
|
await date_picker(query.message,
|
||||||
field_descriptor = field_descriptor,
|
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)
|
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,
|
async def entity_list(message: CallbackQuery | Message,
|
||||||
callback_data: ContextData,
|
callback_data: ContextData,
|
||||||
@@ -78,9 +80,6 @@ async def entity_list(message: CallbackQuery | Message,
|
|||||||
page_size = await Settings.get(Settings.PAGE_SIZE)
|
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)
|
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 issubclass(entity_type, OwnedBotEntity):
|
||||||
if EntityPermission.READ_ALL in user_permissions or EntityPermission.LIST_ALL in user_permissions:
|
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 import Router, F
|
||||||
from aiogram.types import Message, CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup
|
from aiogram.types import Message, CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup
|
||||||
from aiogram.fsm.context import FSMContext
|
from aiogram.fsm.context import FSMContext
|
||||||
|
from aiogram.utils.i18n import I18n
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||||
|
|
||||||
@@ -69,7 +70,9 @@ async def set_language(message: CallbackQuery, **kwargs):
|
|||||||
user.lang = LanguageBase(callback_data.data)
|
user.lang = LanguageBase(callback_data.data)
|
||||||
await db_session.commit()
|
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
|
from ..navigation import pop_navigation_context, save_navigation_context
|
||||||
Reference in New Issue
Block a user