Портфолио: Рефакторинг кода

This commit is contained in:
Kirill Samoylenkov 2025-08-22 21:11:08 +07:00
parent f6a2c1fa30
commit 5c18e22b80
31 changed files with 447 additions and 283 deletions

View file

@ -25,8 +25,12 @@ def __get_offer_text(news) -> str:
# Стандартная информация для новости
if news is not None:
telegram_id = news.tg_id
telegram_username = news.tg_username or _("Админ меню новости, профиль скрыт")
text = news.text[:512] + "..." if len(news.text) >= 512 else ""
telegram_username = news.tg_username or _(
"Админ меню новости, профиль скрыт"
)
text = (
news.text[:512] + "..." if len(news.text) >= 512 else ""
)
# Опциональное получение контактов
contact = news.contact
@ -37,12 +41,16 @@ def __get_offer_text(news) -> str:
else:
contact = _("Админ меню новости, контакт не указан")
return _("Админ меню новости, информация о новости").format(
return (
_("Админ меню новости, информация о новости").format(
telegram_id=telegram_id,
telegram_username=telegram_username,
text=text,
contact=contact,
) if news is not None else _("Админ меню новости непрочитанных нет")
)
if news is not None
else _("Админ меню новости непрочитанных нет")
)
##############
@ -50,7 +58,7 @@ def __get_offer_text(news) -> str:
##############
async def call_news_menu(call: CallbackQuery) -> None:
"""
Админ-меню для просмотра предложенных новостей.
Админ-меню для просмотра предложенных новостей.
"""
await call.message.edit_text(
text=_("Админ меню новости"),
@ -58,19 +66,23 @@ async def call_news_menu(call: CallbackQuery) -> None:
)
async def call_news_favorite(call: CallbackQuery, session: AsyncSession) -> None:
async def call_news_favorite(
call: CallbackQuery, session: AsyncSession
) -> None:
"""
Избранные новости для редактирования и использования.
Избранные новости для редактирования и использования.
"""
await call.message.edit_text(
text=_("Функция в разработке"),
reply_markup=get_back_markup("Назад", "admin_news_menu")
reply_markup=get_back_markup("Назад", "admin_news_menu"),
)
async def call_news_offer_menu(call: CallbackQuery, session: AsyncSession):
async def call_news_offer_menu(
call: CallbackQuery, session: AsyncSession
):
"""
Меню для работы с предложенными новостями через Callback'и.
Меню для работы с предложенными новостями через Callback'и.
"""
data = call.data.split("_")
news_id = int(data[3])
@ -81,21 +93,25 @@ async def call_news_offer_menu(call: CallbackQuery, session: AsyncSession):
await call.message.edit_text(
text=__get_offer_text(news),
reply_markup=get_back_markup(callback_data="admin_news_menu") if news is None \
reply_markup=(
get_back_markup(callback_data="admin_news_menu")
if news is None
else get_admin_news_offer_markup(news)
),
)
return
# Обработка callback'а с действием
step = data[4]
# Выбрана распечатка новости
if step == "print":
news = await get_news(session, news_id)
await call.message.answer(text=call.message.text)
await call.message.answer(text=news.text)
await call.message.answer(
text=news.contact or _("Админ меню новости, контакт не указан")
text=news.contact
or _("Админ меню новости, контакт не указан")
)
return
@ -115,26 +131,37 @@ async def call_news_offer_menu(call: CallbackQuery, session: AsyncSession):
user = await check_user(session, news.tg_id)
reasons = {
UserRole.USER.value: _("Админ новости, автор новости забанен"),
UserRole.BANNED.value: _("Админ новости, автор новости уже был забанен"),
UserRole.USER.value: _(
"Админ новости, автор новости забанен"
),
UserRole.BANNED.value: _(
"Админ новости, автор новости уже был забанен"
),
}
if reasons.get(user.role) is not None:
await see_news(session, news_id)
await update_user_role(session, user.tg_id, UserRole.BANNED)
await update_user_role(
session, user.tg_id, UserRole.BANNED
)
await call.answer(
text=reasons.get(user.role, _("Админ новости, нельзя забанить администратора")),
text=reasons.get(
user.role,
_("Админ новости, нельзя забанить администратора"),
),
show_alert=True,
)
return
# Выбрана следующая или предыдущая новость
news = await get_next_unseen_news(session, news_id) if step == "next" else \
await get_prev_unseen_news(session, news_id)
news = (
await get_next_unseen_news(session, news_id)
if step == "next"
else await get_prev_unseen_news(session, news_id)
)
await call.message.edit_text(
text=__get_offer_text(news),
reply_markup=get_admin_news_offer_markup(news=news)
reply_markup=get_admin_news_offer_markup(news=news),
)