From: Michael Tremer Date: Tue, 31 May 2022 16:46:28 +0000 (+0000) Subject: List all built packages for jobs X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=58a1d773ef91646270ec41dce58ff331d3271531;p=pbs.git List all built packages for jobs Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/jobs.py b/src/buildservice/jobs.py index 59d2789f..a6785463 100644 --- a/src/buildservice/jobs.py +++ b/src/buildservice/jobs.py @@ -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)) diff --git a/src/buildservice/packages.py b/src/buildservice/packages.py index 7ed07fdd..ff287852 100644 --- a/src/buildservice/packages.py +++ b/src/buildservice/packages.py @@ -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 diff --git a/src/templates/build-detail.html b/src/templates/build-detail.html index 48771a60..a4fed38a 100644 --- a/src/templates/build-detail.html +++ b/src/templates/build-detail.html @@ -83,7 +83,7 @@ {% 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 %} diff --git a/src/templates/modules/jobs/list.html b/src/templates/modules/jobs/list.html index 1abfb34c..8d2c23c0 100644 --- a/src/templates/modules/jobs/list.html +++ b/src/templates/modules/jobs/list.html @@ -11,6 +11,19 @@ {% end %} + + {# Show all packages that have been built #} + {% if show_packages and job.packages %} + + {% end %}
diff --git a/src/web/ui_modules.py b/src/web/ui_modules.py index ba506dbb..5924d021 100644 --- a/src/web/ui_modules.py +++ b/src/web/ui_modules.py @@ -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):