mews.bugs: improve text formatting

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