utils: add resolve_maintainer helper

parent 4ff0e993
......@@ -19,7 +19,7 @@ async def ftbfs_handler(m: Message, user: User | None, _maintainer: str | None =
_maintainer = DB.maintainer.get(_maintainer)
if not _maintainer and not any(
_g.group == maintainer for _g in group_data.groups
) and not maintainer in ["@nobody"]:
) and maintainer not in ["@nobody"]:
await m.answer(f"Сопровождающий или группа не найдены.")
return
......
......@@ -5,9 +5,8 @@ from config import tg_api
from altrepo import altrepo
from database.models import User
from database.func import DB
from data.keyboards import bugs_keyboards
from services.utils import _bold
from services.utils import _bold, resolve_maintainer
from config import BUGS_URL
......@@ -15,23 +14,13 @@ async def bugs(
user: User | None, chat_id: int | None = None,
maintainer: str | None = None
) -> None:
chat_id = chat_id or user.user_id
if maintainer:
_maintainer = maintainer.lower()
maintainer = DB.maintainer.get(_maintainer)
if not maintainer:
await tg_api.send_message(
chat_id=chat_id,
text="Сопровождающий не найден."
)
return
else:
if user:
maintainer = user.maintainer
else:
return
resolved = await resolve_maintainer(maintainer, user, chat_id)
if not resolved:
return
maintainer = resolved
bugs_data = await altrepo.api.bug.bugzilla_by_maintainer(maintainer.nickname)
if bugs_data:
......
from telegrinder.tools.formatting import HTMLFormatter, bold
import asyncio
from config import tg_api
from database.models import Maintainer, User
from database.func import DB
import re
from datetime import datetime
async def resolve_maintainer(
maintainer_arg: str | None, user: User | None, chat_id: int
) -> Maintainer | None:
"""Резолвит мейнтейнера из аргумента или из пользователя.
Возвращает Maintainer или None (с отправкой сообщения об ошибке).
"""
if maintainer_arg:
maintainer = DB.maintainer.get(maintainer_arg.lower())
if not maintainer:
await tg_api.send_message(chat_id, "Сопровождающий не найден.")
return None
return maintainer
elif user:
return user.maintainer
return None
async def _translate(text):
process = await asyncio.create_subprocess_exec(
"trans", "-b", "-e", "bing", text,
......
......@@ -6,9 +6,8 @@ from config import TASK_URL
from altrepo import altrepo
from database.models import User
from database.func import DB
from data.keyboards import watch_keyboards
from services.utils import _bold
from services.utils import _bold, resolve_maintainer
async def watch(
......@@ -21,15 +20,10 @@ async def watch(
return
chat_id = user.user_id
if maintainer:
maintainer = maintainer.lower()
if not DB.maintainer.get(maintainer):
await tg_api.send_message(chat_id, "Сопровождающий не найден.")
return
elif user:
maintainer = user.maintainer.nickname
else:
resolved = await resolve_maintainer(maintainer, user, chat_id)
if not resolved:
return
maintainer = resolved.nickname
acl = acl or "by-acl"
watch_data = await altrepo.parser.packages.watch_by_maintainer(maintainer, acl)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment