]> git.ipfire.org Git - pbs.git/commitdiff
builds: Add a new package listing
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 12 Feb 2025 11:24:41 +0000 (11:24 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 12 Feb 2025 11:24:41 +0000 (11:24 +0000)
This is a lot cleaner and combines packages from all architectures which
massively saves space on the page.

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

index 34fd82373db667d725c0b1e2180820e54a9351d8..7023982f5242844d772a40674a8c4819effdc8d0 100644 (file)
@@ -596,6 +596,21 @@ class Build(database.Base, database.BackendMixin, database.SoftDeleteMixin):
                elif any((j.has_failed() for j in self.jobs)):
                        return await self.finished(success=False)
 
+       # Packages
+
+       @property
+       def packages(self):
+               """
+                       Returns a list of all built packages
+               """
+               # Collect all packages
+               packages = itertools.chain(*(job.packages for job in self.jobs))
+
+               packages = { pkg.nevra : pkg for pkg in packages }
+
+               # Return as list
+               return packages.values()
+
        ## Comment stuff
 
        async def comment(self, **kwargs):
index 65f78422db9ad6921724d074c616f99faa9bdf49..045eac280402451bf704700ec2c5faf973d40f79 100644 (file)
@@ -283,6 +283,12 @@ class Package(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        uuid = Column(UUID, nullable=False)
 
+       # Link
+
+       @property
+       def link(self):
+               return "/packages/%s" % self.uuid
+
        # Created At
 
        created_at = Column(
index 63120d5d2cc779cb4d3a3c380b4de8c57523e50e..57fb5768e6d08a36f385f97e932eaa71bd883e03 100644 (file)
        {% endif %}
 {% endmacro %}
 
+{% macro BuildPackages(packages) %}
+       <article class="panel">
+               {% for name, pkgs_by_name in packages | groupby("name") %}
+                       {% for pkg in pkgs_by_name %}
+                               <div class="panel-block is-block">
+                                       <div class="level mb-0">
+                                               <div class="level-left">
+                                                       <div class="level-item is-flex-direction-column">
+                                                               <div>
+                                                                       <p class="title is-6">
+                                                                               {{ pkg.name }}
+                                                                       </p>
+
+                                                                       {# Show the summary in a second line #}
+                                                                       <p class="has-text-grey">
+                                                                               <small>
+                                                                                       {{ pkg.summary }}
+                                                                               </small>
+                                                                       </p>
+                                                               </div>
+                                                       </div>
+                                               </div>
+
+                                               <div class="level-right">
+                                                       {% for arch, pkgs_by_arch in pkgs_by_name | groupby("arch") %}
+                                                               {% for p in pkgs_by_arch %}
+                                                                       <div class="level-item">
+                                                                               <a href="{{ p.link }}">
+                                                                                       <span class="tag is-{{ p.arch }}">
+                                                                                               {{ p.arch }}
+                                                                                       </span>
+                                                                               </a>
+                                                                       </div>
+                                                               {% endfor %}
+                                                       {% endfor %}
+                                               </div>
+                                       </div>
+                               </div>
+
+                               {% break %}
+                       {% endfor %}
+               {% endfor %}
+       </article>
+{% endmacro %}
+
 {% macro BuildWatchers(build, watchers=None) %}
        {% if watchers is none %}
                {% set watchers = build.get_watchers() %}
index 3287ce19ec672c47d4d173c9300851a582963674..4725824062b8fe40e4c5681a4683733ebed61104 100644 (file)
@@ -2,7 +2,7 @@
 
 {% from "macros.html" import Text with context %}
 {% from "bugs/macros.html" import BugList with context %}
-{% from "builds/macros.html" import BuildWatchers with context %}
+{% from "builds/macros.html" import BuildPackages, BuildWatchers with context %}
 {% from "builds/groups/macros.html" import BuildGroupList with context %}
 {% from "events/macros.html" import EventList with context %}
 {% from "jobs/macros.html" import JobList with context %}
                </div>
        </section>
 
+       {# Packages #}
+       {% if build.packages %}
+               <section class="section">
+                       <div class="container">
+                               <h5 class="title is-5">
+                                       {{ _("Packages") }}
+                               </h5>
+
+                               {{ BuildPackages(build.packages) }}
+                       </div>
+               </section>
+       {% endif %}
+
        {% if build.jobs %}
                <section class="section">
                        <div class="container">