]> git.ipfire.org Git - pbs.git/commitdiff
builds: Refactor showing scratch builds
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 3 May 2025 09:32:19 +0000 (09:32 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 3 May 2025 09:32:19 +0000 (09:32 +0000)
I don't think this is working tho

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builds.py
src/templates/packages/name/builds.html
src/web/packages.py

index 2f06a3cef2273f9c42d2de5934b45f9b1db049c3..93bfccd7bd06e1cc8c318ce2a7b37703402101f1 100644 (file)
@@ -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)
                )
 
index 8a53df2d81b0a6f7f0940e5c41a0c19e9f5f1460..046de2f9d794eba87a812c5fd9382de35bca59f4 100644 (file)
                                        </ul>
                                </nav>
 
-                               <h1 class="title is-1">{{ package.name }}</h1>
-                               <h4 class="subtitle is-4">{{ _("Builds") }}</h4>
+                               <h1 class="title is-1">
+                                       {{ package.name }}
+                               </h1>
+
+                               <h4 class="subtitle is-4">
+                                       {{ _("Builds") }}
+                               </h4>
                        </div>
                </div>
        </section>
 
        {# Release Builds #}
-       {% if distros %}
+       {% if release_builds %}
                <section class="section">
                        <div class="container">
                                <h4 class="title is-4">{{ _("Release Builds") }}</h4>
 
-                               {% for distro in distros | sort(reverse=True) %}
+                               {% for distro, builds in release_builds | groupby("distro") %}
                                        <h5 class="title is-5">{{ distro }}</h5>
 
-                                       {{ BuildList(distros[distro], limit=limit,
-                                               more_url=make_url("/builds", name=package.name)) }}
+                                       {{ BuildList(builds, more_url=make_url("/builds", name=package.name)) }}
                                {% endfor %}
                        </div>
                </section>
        {% endif %}
 
        {# Scratch Builds #}
-       {% if users %}
+       {% if scratch_builds %}
                <section class="section">
                        <div class="container">
                                <h4 class="title is-4">{{ _("Scratch Builds") }}</h4>
 
-                               {% for user in users %}
+                               {% for user, builds in scratch_builds | groupby("owner") %}
                                        <h5 class="title is-5">{{ user }}</h5>
 
-                                       {{ 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 %}
                        </div>
                </section>
index aae1e99bd515d14c0c73bf9df2f77549ccf7a1ce..61cedbee904807925f61d810dabca1deadc21630 100644 (file)
@@ -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):