diff --git a/webservice/serve_overview.py b/webservice/serve_overview.py index 2fdf7abeed59176fb1c86b080d2b51b0c1fb46c2..76c5614bc819c5e2c268094e0b4687ec055d8436 100644 --- a/webservice/serve_overview.py +++ b/webservice/serve_overview.py @@ -269,19 +269,19 @@ class RequestHandler(BaseHTTPRequestHandler): last_correction_r = Template(tmpl).render(info=last_calib, host=host, port=port) - conn = sqlite3.connect(config['web-service']['job-db']).cursor() - conn.execute("SELECT * FROM jobs WHERE status IN ('R', 'PD', 'CG')") + conn = sqlite3.connect(config['web-service']['job-db']) + c = conn.execute( + "SELECT status, elapsed, det_type, proposal, run, action FROM " + "slurm_jobs INNER JOIN executions USING (exec_id) " + "INNER JOIN requests USING (req_id) " + "WHERE finished = 0" + ) running_jobs = {} - for r in conn.fetchall(): - rid, jobid, proposal, run, status, time, det, act = r - run = int(run) - key = '{}/r{:04d}/{}/{}'.format(proposal, run, det, act) - flg = "R" - if status in ["QUEUE", "PD"]: - flg = "Q" - rjobs = running_jobs.get(key, []) - rjobs.append((flg, '{}-{}'.format(status, time))) - running_jobs[key] = rjobs + for status, elapsed, det, proposal, run, act in c: + key = f'{proposal}/r{int(run):04d}/{det}/{act}' + flg = "Q" if status in {"QUEUE", "PD"} else "R" + rjobs = running_jobs.setdefault(key, []) + rjobs.append((flg, f'{status}-{elapsed}')) tmpl = self.templates["running-jobs"] running_jobs_r = Template(tmpl).render(running_jobs=running_jobs)