From: Michael Tremer Date: Fri, 18 Aug 2023 14:08:57 +0000 (+0000) Subject: jobs: Show logs of previous attempts X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36edb365dc6d5a9ad501dd65ad299fd3440bbdde;p=pbs.git jobs: Show logs of previous attempts Fixes: #13249 - jobs: Add option to download logs from previous attempts Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/jobs.py b/src/buildservice/jobs.py index 53249155..09b6ea3e 100644 --- a/src/buildservice/jobs.py +++ b/src/buildservice/jobs.py @@ -485,6 +485,49 @@ class Job(base.DataObject): superseeded_by = lazy_property(get_superseeded_by, set_superseeded_by) + @lazy_property + def preceeding_jobs(self): + """ + A list of jobs that came before this one + """ + jobs = self.backend.jobs._get_jobs(""" + WITH RECURSIVE preceeding_jobs AS ( + SELECT + jobs.* + FROM + jobs + WHERE + jobs.superseeded_by = %s + + UNION ALL + + SELECT + jobs.* + FROM + jobs + INNER JOIN + preceeding_jobs ON preceeding_jobs.id = jobs.superseeded_by + ) + + SELECT + * + FROM + preceeding_jobs jobs + WHERE + jobs.deleted_at IS NULL + ORDER BY + jobs.created_at DESC + """, self.id) + + return list(jobs) + + @property + def all_jobs(self): + """ + This includes this job and all preceeding jobs + """ + return [self] + self.preceeding_jobs + @property def created_at(self): """ diff --git a/src/templates/jobs/modules/list.html b/src/templates/jobs/modules/list.html index c96bc38e..279fb99f 100644 --- a/src/templates/jobs/modules/list.html +++ b/src/templates/jobs/modules/list.html @@ -100,10 +100,35 @@
- {% if job.has_log() or job.is_running() %} - - {{ _("View Log") }} - + {% if any((j.has_log() for j in job.all_jobs)) or job.is_running() %} + {% if job.preceeding_jobs %} + + {% else %} + + {{ _("View Log") }} + + {% end %} {% end %} {% if job.can_be_retried() %}