mews.bugs: improve text formatting

parent 7e4f6a26
......@@ -27,7 +27,7 @@ class NewsInfo:
if not url:
return None
html = await self.client.get(url, "koi8-r")
return await bugs_parser(html)
return await bugs_parser(html, url)
async def sisyphus(self) -> models.PackagesModel | None:
url = (await self.news_urls()).sisyphus
......
......@@ -17,6 +17,7 @@ class BugsElementModel(BaseModel):
class BugsModel(BaseModel):
url: str
quickly_resolved: List[BugsElementModel] | None = None
new: List[BugsElementModel] | None = None
old: List[BugsElementModel] | None = None
......
......@@ -4,7 +4,7 @@ import re
from .. import models
async def bugs_parser(html: str):
async def bugs_parser(html: str, url: str):
soup = BeautifulSoup(html, "html.parser")
pre_tag = soup.find("pre")
if not pre_tag:
......@@ -58,6 +58,8 @@ async def bugs_parser(html: str):
if current_bug and section_name:
current_bug["summary"] = description_buffer.strip()
data.setdefault(section_name, []).append(current_bug)
data["url"] = url
return models.BugsModel(**data)
......
......@@ -9,43 +9,38 @@ repo = PACKAGES_URL.format(repo="sisyphus")
async def format_bugs(bugs: BugsModel):
bug_message = ""
if bugs.quickly_resolved:
bug_message += "Быстрозакрытые:\n"
for bug in bugs.quickly_resolved:
bug_message += await _format_bug(bug)
if bugs.new:
bug_message += "Новые:\n"
for bug in bugs.new:
bug_message += await _format_bug(bug)
if bugs.old:
bug_message += "Устаревшие:\n"
for bug in bugs.old:
bug_message += await _format_bug(bug)
if bugs.resolved:
bug_message += "Закрытые:\n"
for bug in bugs.resolved:
bug_message += await _format_bug(bug)
if bugs.reopened:
bug_message += "Переоткрытые:\n"
for bug in bugs.reopened:
bug_message += await _format_bug(bug)
if bugs.random:
bug_message += "Рандомные:\n"
for bug in bugs.random:
bug_message += await _format_bug(bug)
bug_message += "Сформировано при помощи " + HTMLFormatter(bold(link("https://t.me/altlinux_packages_bot", text="ALT Packages Bot")))
bug_message = HTMLFormatter(bold("Новости Багзиллы\n\n"))
categories = [
("Быстрозакрытые", bugs.quickly_resolved),
("Новые", bugs.new),
("Устаревшие", bugs.old),
("Закрытые", bugs.resolved),
("Переоткрытые", bugs.reopened),
("Рандомные", bugs.random),
]
for title, bug_list in categories:
if bug_list:
bug_message += f"{title}:\n"
for bug in bug_list:
bug_message += await _format_bug(bug)
bug_message += (
HTMLFormatter(bold("Сделаем Багзиллу чище!\n")) +
"— Приглашаем активных участников к проверке багов на воспроизводимость.\n\n"
)
bug_message += (
"Источник: " +
HTMLFormatter(link(bugs.url, text="sisyphus-cybertalk")) +
"\n\n#Репорты\n\n"
"Сформировано при помощи " +
HTMLFormatter(bold(link("https://t.me/altlinux_packages_bot", text="ALT Packages Bot")))
)
return bug_message
async def _format_bug(bug: BugsElementModel):
message = HTMLFormatter(
......
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