watch and bugs modules: fix

parent 01722978
......@@ -105,12 +105,17 @@ class BugInfo:
def __init__(self, client: BaseAPI):
self.client = client
async def bugzilla_by_maintainer(self, maintainer_nickname: str, by_acl: str | None = None):
data = await self.client.get(
"/bug/bugzilla_by_maintainer",
{"maintainer_nickname": maintainer_nickname,
"by_acl": by_acl if by_acl else "none"}
)
async def bugzilla_by_maintainer(
self, maintainer_nickname: str, by_acl: str | None = None
) -> models.BugzillaInfoModel | None:
try:
data = await self.client.get(
"/bug/bugzilla_by_maintainer",
{"maintainer_nickname": maintainer_nickname,
"by_acl": by_acl if by_acl else "none"}
)
except errors.DataNotFoundError:
return None
return models.BugzillaInfoModel(**data)
......@@ -155,11 +160,14 @@ class SiteInfo:
)
return models.MaintainerInfoModel(**data)
async def watch_by_maintainer(self, maintainer_nickname: str) -> models.SiteWatchByMaintainerModel:
data = await self.client.get(
"/site/watch_by_maintainer",
{"maintainer_nickname": maintainer_nickname}
)
async def watch_by_maintainer(self, maintainer_nickname: str) -> models.SiteWatchByMaintainerModel | None:
try:
data = await self.client.get(
"/site/watch_by_maintainer",
{"maintainer_nickname": maintainer_nickname}
)
except errors.DataNotFoundError:
return None
return models.SiteWatchByMaintainerModel(**data)
......
......@@ -30,8 +30,11 @@ async def bugs_handler(m: Message, user: User | None, maintainer: str | None = N
return
bugs_data = await altrepo.api.bug.bugzilla_by_maintainer(maintainer)
unresolved_bugs = [bug for bug in bugs_data.bugs if bug.status not in ["RESOLVED", "CLOSED"]]
if bugs_data:
unresolved_bugs = [bug for bug in bugs_data.bugs if bug.status not in ["RESOLVED", "CLOSED"]]
else:
unresolved_bugs = []
if not len(unresolved_bugs):
await m.answer(
"Нет открытых багов"
......
......@@ -26,13 +26,19 @@ async def profile_handler(m: Message, user: User | None) -> None:
roles = DB.user.get_roles(m.from_user.id)
bugs_data = await altrepo.api.bug.bugzilla_by_maintainer(user.maintainer)
unresolved_bugs = [bug for bug in bugs_data.bugs if bug.status not in ["RESOLVED", "CLOSED"]]
if bugs_data:
all_bugs = bugs_data.bugs
unresolved_bugs = [bug for bug in bugs_data.bugs if bug.status not in ["RESOLVED", "CLOSED"]]
else:
all_bugs = []
unresolved_bugs = []
await m.answer(
"Профиль:\n\n"
f"Сопровождающий: {maintainer.packager_name} ({maintainer.packager_nickname})\n"
f"Исходные пакеты: {maintainer.count_source_pkg}\n"
"\n"
f"Всего багов: {bugs_data.length}\n"
f"Всего багов: {len(all_bugs)}\n"
f"Открытых багов: {len(unresolved_bugs)}\n\n"
f"Роли в боте: {", ".join(roles) or "пользователь"}",
reply_markup=profile_keyboards.profile_kb
......
......@@ -28,15 +28,15 @@ async def watch_handler(m: Message, user: User | None, maintainer: str | None =
return
watch_data = await altrepo.api.site.watch_by_maintainer(maintainer)
if not len(watch_data.packages):
watch_packages = watch_data.packages if watch_data else []
if not len(watch_packages):
await m.answer("Нет устаревших пакетов")
return
watch_message = "Отслеживание:\n\n"
packages = {}
for package in watch_data.packages:
for package in watch_packages:
name = package.pkg_name
if name not in packages or "src.rpm" in packages[name].url:
packages[name] = package
......
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