update statistics

parent d0f90c33
...@@ -40,7 +40,11 @@ class APIInfo: ...@@ -40,7 +40,11 @@ class APIInfo:
class PackagesetInfo: class PackagesetInfo:
def __init__(self, client: BaseAPI): def __init__(self, client: BaseAPI):
self.client = client self.client = client
async def active_packagesets(self) -> models.PackageSetActivePackageSetsModel:
data = await self.client.get("/packageset/active_packagesets")
return models.PackageSetActivePackageSetsModel(**data)
async def repository_statistics(self, branch: str | None = None) -> models.RepositoryStatisticsModel: async def repository_statistics(self, branch: str | None = None) -> models.RepositoryStatisticsModel:
if branch: if branch:
data = await self.client.get("/packageset/repository_statistics", {"branch": branch}) data = await self.client.get("/packageset/repository_statistics", {"branch": branch})
......
...@@ -8,6 +8,11 @@ class APIVersion(BaseModel): ...@@ -8,6 +8,11 @@ class APIVersion(BaseModel):
description: str description: str
class PackageSetActivePackageSetsModel(BaseModel):
length: int
packagesets: List[str]
class RepositoryStatisticsPackageCountsModel(BaseModel): class RepositoryStatisticsPackageCountsModel(BaseModel):
arch: str arch: str
component: str component: str
......
from telegrinder import MESSAGE_FROM_USER, Dispatch, Message, WaiterMachine, CallbackQuery from telegrinder import MESSAGE_FROM_USER, Dispatch, Message, WaiterMachine, CallbackQuery
from telegrinder.rules import Command, PayloadEqRule, Text, IsUser from telegrinder.rules import Command, PayloadEqRule, Text, IsUser, Markup, Argument
from datetime import datetime from datetime import datetime
import locale import locale
...@@ -13,11 +13,23 @@ from database.models import User ...@@ -13,11 +13,23 @@ from database.models import User
dp = Dispatch() dp = Dispatch()
wm = WaiterMachine(dp) wm = WaiterMachine(dp)
@dp.message(Command("statistics")) @dp.message(Command("statistics", Argument("branch", optional=True)))
@dp.message(Text(["statistics", "статистика"], ignore_case=True), IsUser()) @dp.message(Text(["statistics", "статистика"], ignore_case=True), IsUser())
async def profile_handler(m: Message, user: User | None) -> None: async def profile_handler(m: Message, user: User | None, branch: str | None = None) -> None:
statistics_data = (await api.packageset.repository_statistics(user.default_branch)).branches[0] active_branches = (await api.packageset.active_packagesets()).packagesets
if branch:
branch = branch.strip().lower()
if branch not in active_branches:
await m.answer(f"Репозиторий {branch} не найден")
return
else:
if user:
branch = user.default_branch
else:
branch = (await api.packageset.active_packagesets())[0]
statistics_data = (await api.packageset.repository_statistics(branch)).branches[0]
locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8') locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8')
......
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