add ruff format, ruff check, time_picker, project structure and imports reorganized
This commit is contained in:
@@ -1,3 +1,2 @@
|
||||
from .auth import AuthMiddleware
|
||||
from .i18n import I18nMiddleware
|
||||
from .reset_state import ResetStateMiddleware
|
||||
from .auth import AuthMiddleware as AuthMiddleware
|
||||
from .i18n import I18nMiddleware as I18nMiddleware
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
from aiogram import BaseMiddleware
|
||||
from aiogram.types import TelegramObject, Message, CallbackQuery
|
||||
from aiogram.utils.i18n import gettext as _
|
||||
from babel.support import LazyProxy
|
||||
from typing import Any, Awaitable, Callable, Dict
|
||||
|
||||
@@ -8,33 +7,31 @@ from ...model.user import UserBase
|
||||
|
||||
|
||||
class AuthMiddleware(BaseMiddleware):
|
||||
|
||||
def __init__[UserType: UserBase](self,
|
||||
user_class: type[UserType],
|
||||
not_authenticated_msg: LazyProxy | str = "not authenticated",
|
||||
not_active_msg: LazyProxy | str = "not active"):
|
||||
|
||||
def __init__[UserType: UserBase](
|
||||
self,
|
||||
user_class: type[UserType],
|
||||
not_authenticated_msg: LazyProxy | str = "not authenticated",
|
||||
not_active_msg: LazyProxy | str = "not active",
|
||||
):
|
||||
self.user_class = user_class
|
||||
self.not_authenticated_msg = not_authenticated_msg
|
||||
self.not_active_msg = not_active_msg
|
||||
|
||||
|
||||
async def __call__(self,
|
||||
handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]],
|
||||
event: TelegramObject,
|
||||
data: Dict[str, Any]) -> Any:
|
||||
|
||||
user = await self.user_class.get(id = event.from_user.id, session = data["db_session"])
|
||||
|
||||
async def __call__(
|
||||
self,
|
||||
handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]],
|
||||
event: TelegramObject,
|
||||
data: Dict[str, Any],
|
||||
) -> Any:
|
||||
user = await self.user_class.get(
|
||||
id=event.from_user.id, session=data["db_session"]
|
||||
)
|
||||
|
||||
if user and user.is_active:
|
||||
data["user"] = user
|
||||
return await handler(event, data)
|
||||
|
||||
|
||||
if type(event) in [Message, CallbackQuery]:
|
||||
if user and not user.is_active:
|
||||
return await event.answer(self.not_active_msg)
|
||||
return await event.answer(self.not_authenticated_msg)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -5,10 +5,6 @@ from ...model.user import UserBase
|
||||
|
||||
|
||||
class I18nMiddleware(SimpleI18nMiddleware):
|
||||
"""
|
||||
This middleware stores locale in the FSM storage
|
||||
"""
|
||||
|
||||
def __init__[UserType: UserBase](
|
||||
self,
|
||||
user_class: type[UserType],
|
||||
@@ -22,7 +18,7 @@ class I18nMiddleware(SimpleI18nMiddleware):
|
||||
async def get_locale(self, event: TelegramObject, data: Dict[str, Any]) -> str:
|
||||
db_session = data.get("db_session")
|
||||
if db_session and event.model_fields.get("from_user"):
|
||||
user = await self.user_class.get(id = event.from_user.id, session = db_session)
|
||||
user = await self.user_class.get(id=event.from_user.id, session=db_session)
|
||||
if user and user.lang:
|
||||
return user.lang
|
||||
return await super().get_locale(event=event, data=data)
|
||||
return await super().get_locale(event=event, data=data)
|
||||
|
||||
@@ -1,30 +1,26 @@
|
||||
from typing import Any, Awaitable, Callable, Dict
|
||||
from aiogram import BaseMiddleware
|
||||
from aiogram.types import TelegramObject
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.utils.i18n import gettext as _
|
||||
# from typing import Any, Awaitable, Callable, Dict
|
||||
# from aiogram import BaseMiddleware
|
||||
# from aiogram.types import TelegramObject
|
||||
# from aiogram.fsm.context import FSMContext
|
||||
# from aiogram.utils.i18n import gettext as _
|
||||
|
||||
from ...bot.handlers.context import ContextData
|
||||
# from ...bot.handlers.context import ContextData
|
||||
|
||||
|
||||
class ResetStateMiddleware(BaseMiddleware):
|
||||
async def __call__(self,
|
||||
handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]],
|
||||
event: TelegramObject,
|
||||
data: Dict[str, Any]) -> Any:
|
||||
|
||||
save_state = False
|
||||
callback_data = data.get("callback_data")
|
||||
if isinstance(callback_data, ContextData):
|
||||
save_state = callback_data.save_state
|
||||
# class ResetStateMiddleware(BaseMiddleware):
|
||||
# async def __call__(self,
|
||||
# handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]],
|
||||
# event: TelegramObject,
|
||||
# data: Dict[str, Any]) -> Any:
|
||||
|
||||
if not save_state:
|
||||
state = data.get("state")
|
||||
if isinstance(state, FSMContext):
|
||||
await state.clear()
|
||||
|
||||
return await handler(event, data)
|
||||
|
||||
|
||||
# save_state = False
|
||||
# callback_data = data.get("callback_data")
|
||||
# if isinstance(callback_data, ContextData):
|
||||
# save_state = callback_data.save_state
|
||||
|
||||
|
||||
# if not save_state:
|
||||
# state = data.get("state")
|
||||
# if isinstance(state, FSMContext):
|
||||
# await state.clear()
|
||||
|
||||
# return await handler(event, data)
|
||||
|
||||
Reference in New Issue
Block a user