Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
altlinux-packages-bot
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kirill Unitsaev
altlinux-packages-bot
Commits
673f3cf4
Verified
Commit
673f3cf4
authored
Aug 07, 2025
by
Kirill Unitsaev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
package module: optimize the code
parent
cbc1a862
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
57 additions
and
39 deletions
+57
-39
methods.py
src/altrepo/api/methods.py
+9
-0
package.py
src/handlers/package.py
+48
-39
No files found.
src/altrepo/api/methods.py
View file @
673f3cf4
...
...
@@ -215,6 +215,15 @@ class SiteInfo:
)
return
models
.
SitePackageInfoModel
(
**
data
)
async
def
pkghash_by_binary_name
(
self
,
branch
:
str
,
name
:
str
,
arch
:
str
)
->
models
.
SitePackagesetPackageHashModel
:
data
=
await
self
.
client
.
get
(
"/site/pkghash_by_binary_name"
,
{
"branch"
:
branch
,
"name"
:
name
,
"arch"
:
arch
},
)
return
models
.
SitePackagesetPackageHashModel
(
**
data
)
async
def
pkghash_by_name
(
self
,
branch
:
str
,
name
:
str
)
->
models
.
SitePackagesetPackageHashModel
:
data
=
await
self
.
client
.
get
(
"/site/pkghash_by_name"
,
...
...
src/handlers/package.py
View file @
673f3cf4
from
telegrinder
import
Dispatch
,
Message
from
telegrinder.rules
import
Command
,
Argument
,
Text
,
IsUser
from
telegrinder.tools.formatting
import
HTMLFormatter
from
telegrinder.rules
import
Command
,
Argument
from
datetime
import
datetime
from
altrepo
import
altrepo
from
altrepo.api.errors
import
DataNotFoundError
from
altrepo.api.errors
import
DataNotFoundError
,
RequestValidationError
from
database.models
import
User
from
database.func
import
DB
from
data.keyboards
import
watch_keyboards
from
services.utils
import
_bold
dp
=
Dispatch
()
@dp.message
(
Command
(
"package"
,
Command
(
"package"
,
Argument
(
"name"
,
optional
=
True
),
Argument
(
"branch"
,
optional
=
True
),
Argument
(
"arch"
,
optional
=
True
),
...
...
@@ -24,69 +23,80 @@ dp = Dispatch()
)
async
def
package_info_handler
(
m
:
Message
,
user
:
User
|
None
=
None
,
name
:
str
|
None
=
None
,
branch
:
str
|
None
=
None
,
arch
:
str
|
None
=
None
arch
:
str
|
None
=
None
,
)
->
None
:
if
name
is
None
:
await
m
.
answer
(
"Не указано имя пакета"
)
return
branch
=
branch
or
"sisyphus"
user_branch
=
user
.
default_branch
if
user
else
None
branch
=
branch
or
user_branch
or
"sisyphus"
try
:
package_data
=
await
altrepo
.
api
.
package
.
package_info
(
name
=
name
,
branch
=
branch
,
source
=
False
if
arch
else
True
,
arch
=
arch
or
None
,
full
=
True
if
arch
:
pkghash
=
(
await
altrepo
.
api
.
site
.
pkghash_by_binary_name
(
branch
,
name
,
arch
)
)
.
pkghash
else
:
pkghash
=
(
await
altrepo
.
api
.
site
.
pkghash_by_name
(
branch
,
name
))
.
pkghash
package
=
await
altrepo
.
api
.
site
.
package_info
(
branch
,
pkghash
,
package_type
=
"binary"
if
arch
else
"source"
)
package
=
package_data
.
packages
[
0
]
except
:
except
DataNotFoundError
:
await
m
.
answer
(
"Не удалось найти пакет."
)
return
except
RequestValidationError
:
await
m
.
answer
(
"Ошибка обработки параметров."
)
return
buildtime
=
datetime
.
fromtimestamp
(
package
.
buildtime
)
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
packager
=
DB
.
maintainer
.
get
(
package
.
packager_
email
.
split
(
"@"
)[
0
]
)
packager
=
DB
.
maintainer
.
get
(
package
.
packager_
nickname
)
if
arch
:
sourse_package
=
(
await
altrepo
.
api
.
site
.
find_source_package
(
branch
,
package
.
name
))
.
source_package
source_package
=
package
.
package_archs
[
0
]
.
name
new_version
=
None
if
not
arch
:
pkghash
=
(
await
altrepo
.
api
.
site
.
pkghash_by_name
(
branch
,
package
.
name
))
.
pkghash
binary_packages
=
await
altrepo
.
api
.
site
.
package_info
(
branch
,
pkghash
)
new_version
=
package
.
new_version
if
new_version
:
new_version_message
=
_bold
(
f
"Собрана новая версия пакета
\n
"
)
new_version_message
+=
f
" № Задания: {new_version[0].task_id}
\n
"
new_version_message
+=
(
f
" Новая версия: {new_version[0].version}-{new_version[0].release}"
)
binary_packages_message
=
_bold
(
"
\n\n
Бинарные пакеты:
\n
"
)
for
binary_package
in
binary_packages
.
package_archs
:
for
i
,
binary_package
in
enumerate
(
package
.
package_archs
):
if
i
==
15
:
binary_packages_message
+=
" ..."
break
binary_packages_message
+=
f
" {binary_package.name}"
binary_packages_message
+=
f
" ({"
,
".join(binary_package.archs)})
\n
"
_package
=
DB
.
package
.
get
(
package
.
name
)
if
_package
and
_package
.
summary_ru
:
summary
=
_package
.
summary_ru
else
:
summary
=
package
.
summary
summary
=
(
_package
.
summary_ru
if
_package
and
_package
.
summary_ru
else
package
.
summary
)
message
=
(
f
"{_bold("
Пакет
" + package.name)}
\n\n
"
f
"{f"
{
new_version_message
}
\
n
\
n
" if new_version else ""}"
f
"Версия: {package.version}-{package.release}
\n
"
f
"{f"
Архитектура
:
{
package
.
arch
}
\
n
" if arch else ""}"
f
"Собран: {buildtime}
\n
"
f
"{f"
Исходный
пакет
:
{
sour
s
e_package
}
\
n
" if arch else ""}"
f
"{f"
Исходный
пакет
:
{
sour
c
e_package
}
\
n
" if arch else ""}"
f
"Сопровождающий: {packager.name_ru} ({packager.nickname})
\n\n
"
f
"Категория: {package.group}
\n
"
f
"Категория: {package.category}
\n
"
f
"Домашняя страница: {package.url}
\n
"
f
"Лицензия: {package.license}
\n\n
"
f
"{_bold("
О
пакете
:
")}
\n
"
f
"{summary}"
f
"{f"
{
binary_packages_message
}
" if not arch else ""}"
)
await
m
.
answer
(
message
)
\ No newline at end of file
await
m
.
answer
(
message
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment