]> git.ipfire.org Git - pbs.git/commitdiff
List all built packages for jobs
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 31 May 2022 16:46:28 +0000 (16:46 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 31 May 2022 16:46:28 +0000 (16:46 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/jobs.py
src/buildservice/packages.py
src/templates/build-detail.html
src/templates/modules/jobs/list.html
src/web/ui_modules.py

index 59d2789f7824ce98305615db6f10a1abbf44d730..a678546330caea0a6941605eca4826dbbc808267 100644 (file)
@@ -115,11 +115,7 @@ class Job(base.DataObject):
                return NotImplemented
 
        def __iter__(self):
-               packages = self.backend.packages._get_packages("SELECT packages.* FROM jobs_packages \
-                       LEFT JOIN packages ON jobs_packages.pkg_id = packages.id \
-                       WHERE jobs_packages.job_id = %s ORDER BY packages.name", self.id)
-
-               return iter(packages)
+               return iter(self.packages)
 
        def __bool__(self):
                return True
@@ -166,6 +162,24 @@ class Job(base.DataObject):
        def pkg(self):
                return self.build.pkg
 
+       @lazy_property
+       def packages(self):
+               packages = self.backend.packages._get_packages("""
+                       SELECT
+                               packages.*
+                       FROM
+                               jobs_packages
+                       LEFT JOIN
+                               packages ON jobs_packages.pkg_id = packages.id
+                       WHERE
+                               jobs_packages.job_id = %s
+                       ORDER BY
+                               packages.name""",
+                       self.id,
+               )
+
+               return list(packages)
+
        @property
        def size(self):
                return sum((p.size for p in self.packages))
index 7ed07fdd5a2194a02692a3106a210fb849fd636d..ff287852a738cca18f23dce78c8b528108797b28 100644 (file)
@@ -164,6 +164,9 @@ class Package(base.DataObject):
        def __repr__(self):
                return "<%s %s>" % (self.__class__.__name__, self.friendly_name)
 
+       def __str__(self):
+               return self.friendly_name
+
        def __eq__(self, other):
                if isinstance(other, self.__class__):
                        return self.id == other.id
index 48771a60704caf5c4a4ee1632513eeb1ab546e91..a4fed38a7df26f2ae8f9742edb7a10140cf95c13 100644 (file)
@@ -83,7 +83,7 @@
        </a>
 
        {% if build.jobs %}
-               {% module JobsList(build.jobs, show_arch_only=True) %}
+               {% module JobsList(build.jobs, show_arch_only=True, show_packages=True) %}
        {% end %}
 {% end block %}
 
index 1abfb34c7aa18f7147c4c267b26ca7074faeefc6..8d2c23c048df1261755c7e686e77db592ace8fd5 100644 (file)
                                                {% end %}
                                        </a>
                                </h6>
+
+                               {# Show all packages that have been built #}
+                               {% if show_packages and job.packages %}
+                                       <ul>
+                                               {% for package in job %}
+                                                       <li>
+                                                               <a href="/package/{{ package.uuid }}">
+                                                                       {{ package }}
+                                                               </a>
+                                                       </li>
+                                               {% end %}
+                                       </ul>
+                               {% end %}
                        </div>
 
                        <div class="cell medium-7">
index ba506dbb32e18685fbefbb110f43c21248a872a3..5924d021e43afc220bddcf08f09d2cb8b829aa6b 100644 (file)
@@ -312,9 +312,9 @@ class JobsTableModule(UIModule):
 
 
 class JobsListModule(UIModule):
-       def render(self, jobs, show_arch_only=False):
+       def render(self, jobs, show_arch_only=False, show_packages=False):
                return self.render_string("modules/jobs/list.html", jobs=jobs,
-                       show_arch_only=show_arch_only)
+                       show_arch_only=show_arch_only, show_packages=show_packages)
 
 
 class RepositoryTableModule(UIModule):