From 1ca90c633fb6938148f8345521ca9eb14e98f20b Mon Sep 17 00:00:00 2001 From: Alexander Kalinovsky Date: Sat, 1 Feb 2025 20:21:55 +0100 Subject: [PATCH] fixes --- bot/handlers/menu/language.py | 2 +- bot/handlers/start.py | 2 ++ config/__init__.py | 2 +- middleware/telegram/i18n.py | 2 +- model/bot_enum.py | 15 +++++++++------ model/user.py | 2 ++ 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/bot/handlers/menu/language.py b/bot/handlers/menu/language.py index 5280fa4..c69c92a 100644 --- a/bot/handlers/menu/language.py +++ b/bot/handlers/menu/language.py @@ -48,7 +48,7 @@ async def language_menu( inline_keyboard = [ [ InlineKeyboardButton( - text=locale.localized(user.lang), + text=locale.localized(user.lang.value), callback_data=ContextData( command=CallbackCommand.SET_LANGUAGE, data=str(locale) ).pack(), diff --git a/bot/handlers/start.py b/bot/handlers/start.py index a5aa0cd..691f8f4 100644 --- a/bot/handlers/start.py +++ b/bot/handlers/start.py @@ -36,6 +36,8 @@ async def start( item.value for item in LanguageBase.all_members.values() ]: lang = LanguageBase(message.from_user.language_code) + else: + lang = LanguageBase.EN user = await User.create( session=db_session, diff --git a/config/__init__.py b/config/__init__.py index 66f2cf0..27cb658 100644 --- a/config/__init__.py +++ b/config/__init__.py @@ -24,7 +24,7 @@ class Config(BaseSettings): def DATABASE_URI(self) -> str: return f"postgresql+asyncpg://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}" - DOMAIN: str + DOMAIN: str = "localhost" @computed_field @property diff --git a/middleware/telegram/i18n.py b/middleware/telegram/i18n.py index 925f026..c2e4374 100644 --- a/middleware/telegram/i18n.py +++ b/middleware/telegram/i18n.py @@ -20,5 +20,5 @@ class I18nMiddleware(SimpleI18nMiddleware): if db_session and event.model_fields.get("from_user"): user = await self.user_class.get(id=event.from_user.id, session=db_session) if user and user.lang: - return user.lang + return user.lang.value return await super().get_locale(event=event, data=data) diff --git a/model/bot_enum.py b/model/bot_enum.py index e0585ca..0ce3235 100644 --- a/model/bot_enum.py +++ b/model/bot_enum.py @@ -130,15 +130,18 @@ class EnumMember(object): return hash(self.value) def localized(self, lang: str = None) -> str: - if self.loc_obj and len(self.loc_obj) > 0: - if lang and lang in self.loc_obj.keys(): - return self.loc_obj[lang] - else: + if self.loc_obj: + if not lang: i18n = I18n.get_current() if i18n: - return self.loc_obj[i18n.current_locale] + lang = i18n.current_locale else: - return self.loc_obj[list(self.loc_obj.keys())[0]] + lang = list(self.loc_obj.keys())[0] + + if lang in self.loc_obj.keys(): + return self.loc_obj[lang] + else: + return self.loc_obj[list(self.loc_obj.keys())[0]] return self.value diff --git a/model/user.py b/model/user.py index 9880f31..eb2dd80 100644 --- a/model/user.py +++ b/model/user.py @@ -16,6 +16,8 @@ class UserBase(BotEntity, table=False): lang: LanguageBase = Field(sa_type=EnumType(LanguageBase), default=LanguageBase.EN) is_active: bool = True + name: str + roles: list[RoleBase] = Field( sa_type=ARRAY(EnumType(RoleBase)), default=[RoleBase.DEFAULT_USER] )