From: Michael Tremer Date: Sat, 3 May 2025 09:32:19 +0000 (+0000) Subject: builds: Refactor showing scratch builds X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=4a972d6e8db044f912a28fb7e2d877b0e33f1d23;p=pbs.git builds: Refactor showing scratch builds I don't think this is working tho Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/builds.py b/src/buildservice/builds.py index 2f06a3ce..93bfccd7 100644 --- a/src/buildservice/builds.py +++ b/src/buildservice/builds.py @@ -163,7 +163,10 @@ class Builds(base.Object): ) .label("_number"), ) - .join(Build.pkg) + .join( + packages.Package, + packages.Package.id == Build.pkg_id, + ) .where( Build.deleted_at == None, Build.owner_id == None, @@ -174,9 +177,14 @@ class Builds(base.Object): ) stmt = ( - sqlalchemy.select(Build) + sqlalchemy + .select( + Build, + ) .select_from(cte) - .order_by(cte.c._number) + .order_by( + cte.c._number, + ) .limit(limit) ) diff --git a/src/templates/packages/name/builds.html b/src/templates/packages/name/builds.html index 8a53df2d..046de2f9 100644 --- a/src/templates/packages/name/builds.html +++ b/src/templates/packages/name/builds.html @@ -22,39 +22,42 @@ -

{{ package.name }}

-

{{ _("Builds") }}

+

+ {{ package.name }} +

+ +

+ {{ _("Builds") }} +

{# Release Builds #} - {% if distros %} + {% if release_builds %}

{{ _("Release Builds") }}

- {% for distro in distros | sort(reverse=True) %} + {% for distro, builds in release_builds | groupby("distro") %}
{{ distro }}
- {{ BuildList(distros[distro], limit=limit, - more_url=make_url("/builds", name=package.name)) }} + {{ BuildList(builds, more_url=make_url("/builds", name=package.name)) }} {% endfor %}
{% endif %} {# Scratch Builds #} - {% if users %} + {% if scratch_builds %}

{{ _("Scratch Builds") }}

- {% for user in users %} + {% for user, builds in scratch_builds | groupby("owner") %}
{{ user }}
- {{ BuildList(users[user], limit=limit, - more_url=make_url("/builds", name=package.name, user=user.name)) }} + {{ BuildList(builds, more_url=make_url("/builds", name=package.name, user=user.name)) }} {% endfor %}
diff --git a/src/web/packages.py b/src/web/packages.py index aae1e99b..61cedbee 100644 --- a/src/web/packages.py +++ b/src/web/packages.py @@ -62,19 +62,13 @@ class NameBuildsHandler(base.BaseHandler): limit = self.get_argument_int("limit", 5) # Find the latest release builds - release_builds = self.backend.builds.get_release_builds_by_name(name) - - # Group them by distribution - distros = await misc.group(release_builds, lambda build: build.distro) + release_builds = await self.backend.builds.get(name, scratch=False, limit=limit) # Find the latest scratch builds - scratch_builds = self.backend.builds.get_scratch_builds_by_name(name) - - # Group them by user - users = await misc.group(scratch_builds, lambda build: build.owner) + scratch_builds = await self.backend.builds.get(name, scratch=True) await self.render("packages/name/builds.html", limit=limit, - package=build.pkg, distros=distros, users=users) + package=build.pkg, release_builds=release_builds, scratch_builds=scratch_builds) class ShowHandler(base.BaseHandler):