Портфолио: Рефакторинг кода
This commit is contained in:
parent
f6a2c1fa30
commit
5c18e22b80
31 changed files with 447 additions and 283 deletions
|
|
@ -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),
|
||||
)
|
||||
|
||||
|
|
|
|||
Reference in a new issue