add ruff format, ruff check, time_picker, project structure and imports reorganized
This commit is contained in:
96
bot/handlers/forms/entity_form_callbacks.py
Normal file
96
bot/handlers/forms/entity_form_callbacks.py
Normal file
@@ -0,0 +1,96 @@
|
||||
from aiogram import Router, F
|
||||
from aiogram.types import CallbackQuery, InlineKeyboardButton
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from ..context import ContextData, CallbackCommand
|
||||
from ....model.user import UserBase
|
||||
from ....model.settings import Settings
|
||||
from ....model import EntityPermission
|
||||
from ....utils.main import (
|
||||
check_entity_permission,
|
||||
get_value_repr,
|
||||
get_entity_descriptor,
|
||||
)
|
||||
from ..common.routing import route_callback
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from ....main import QBotApp
|
||||
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
@router.callback_query(ContextData.filter(F.command == CallbackCommand.ENTITY_DELETE))
|
||||
async def entity_delete_callback(query: CallbackQuery, **kwargs):
|
||||
callback_data: ContextData = kwargs["callback_data"]
|
||||
user: UserBase = kwargs["user"]
|
||||
db_session: AsyncSession = kwargs["db_session"]
|
||||
app: "QBotApp" = kwargs["app"]
|
||||
|
||||
entity_descriptor = get_entity_descriptor(app=app, callback_data=callback_data)
|
||||
|
||||
entity = await entity_descriptor.type_.get(
|
||||
session=db_session, id=int(callback_data.entity_id)
|
||||
)
|
||||
|
||||
if not check_entity_permission(
|
||||
entity=entity, user=user, permission=EntityPermission.DELETE
|
||||
):
|
||||
return await query.answer(
|
||||
text=(await Settings.get(Settings.APP_STRINGS_FORBIDDEN))
|
||||
)
|
||||
|
||||
if callback_data.data == "yes":
|
||||
await entity_descriptor.type_.remove(
|
||||
session=db_session, id=int(callback_data.entity_id), commit=True
|
||||
)
|
||||
|
||||
await route_callback(message=query, **kwargs)
|
||||
|
||||
elif callback_data.data == "no":
|
||||
await route_callback(message=query, back=False, **kwargs)
|
||||
|
||||
elif not callback_data.data:
|
||||
field_descriptor = entity_descriptor.fields_descriptors["name"]
|
||||
|
||||
entity = await entity_descriptor.type_.get(
|
||||
session=db_session, id=int(callback_data.entity_id)
|
||||
)
|
||||
|
||||
return await query.message.edit_text(
|
||||
text=(
|
||||
await Settings.get(Settings.APP_STRINGS_CONFIRM_DELETE_P_NAME)
|
||||
).format(
|
||||
name=get_value_repr(
|
||||
value=getattr(entity, field_descriptor.name),
|
||||
field_descriptor=field_descriptor,
|
||||
locale=user.lang,
|
||||
)
|
||||
),
|
||||
reply_markup=InlineKeyboardBuilder()
|
||||
.row(
|
||||
InlineKeyboardButton(
|
||||
text=(await Settings.get(Settings.APP_STRINGS_YES_BTN)),
|
||||
callback_data=ContextData(
|
||||
command=CallbackCommand.ENTITY_DELETE,
|
||||
entity_name=callback_data.entity_name,
|
||||
entity_id=callback_data.entity_id,
|
||||
form_params=callback_data.form_params,
|
||||
data="yes",
|
||||
).pack(),
|
||||
),
|
||||
InlineKeyboardButton(
|
||||
text=(await Settings.get(Settings.APP_STRINGS_NO_BTN)),
|
||||
callback_data=ContextData(
|
||||
command=CallbackCommand.ENTITY_ITEM,
|
||||
entity_name=callback_data.entity_name,
|
||||
entity_id=callback_data.entity_id,
|
||||
form_params=callback_data.form_params,
|
||||
data="no",
|
||||
).pack(),
|
||||
),
|
||||
)
|
||||
.as_markup(),
|
||||
)
|
||||
Reference in New Issue
Block a user