From b64174b3ac65831ebd3626265b45038a07fcb7b1 Mon Sep 17 00:00:00 2001 From: dopc Date: Thu, 23 May 2024 16:56:34 +0300 Subject: [PATCH 1/3] naive py and html solution --- rq_dashboard/templates/rq_dashboard/job.html | 20 +++++++++++++++++++- rq_dashboard/web.py | 16 +++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/rq_dashboard/templates/rq_dashboard/job.html b/rq_dashboard/templates/rq_dashboard/job.html index 053241f..b48d642 100644 --- a/rq_dashboard/templates/rq_dashboard/job.html +++ b/rq_dashboard/templates/rq_dashboard/job.html @@ -24,8 +24,26 @@

Job ID: {{ id }}

Origin queue:
<%= d.origin %>

Status:
<%= d.status %>

Result:
<%= d.result %>

+

Metadata:
<%= d.metadata %>

+

Depends on:

+ <% if (d.depends_on) { %> + + <% } %> -

Created at:
<%= d.created_at %>

Enqueued at:
<%= d.enqueued_at %>

diff --git a/rq_dashboard/web.py b/rq_dashboard/web.py index e2fe2e6..ea15493 100644 --- a/rq_dashboard/web.py +++ b/rq_dashboard/web.py @@ -16,6 +16,7 @@ provides the option to require HTTP Basic Auth in a few lines of code. """ +import json import os import re from functools import wraps @@ -577,7 +578,7 @@ def list_jobs(instance_number, queue_name, registry_name, per_page, page): @jsonify def job_info(instance_number, job_id): job = Job.fetch(job_id, serializer=config.serializer) - return dict( + result = dict( id=job.id, created_at=serialize_date(job.created_at), enqueued_at=serialize_date(job.enqueued_at), @@ -587,7 +588,20 @@ def job_info(instance_number, job_id): result=job.return_value(), exc_info=str(job.exc_info) if job.exc_info else None, description=job.description, + metadata=json.dumps(job.get_meta()), ) + dep_ids = [di.decode("utf-8").split(':')[-1].strip() for di in job.dependency_ids] + if len(dep_ids) > 0: + result["depends_on"] = ','.join(dep_ids) + status = [] + for dep_id in dep_ids: + try: + _ = Job.fetch(dep_id, serializer=config.serializer) + status.append('active') + except NoSuchJobError: + status.append('expired') + result["depends_on_status"] = ','.join(status) + return result @blueprint.route("//data/workers.json") From 0defd74ee54e20f65293e0a002019fa13680b487 Mon Sep 17 00:00:00 2001 From: dopc Date: Thu, 23 May 2024 17:59:11 +0300 Subject: [PATCH 2/3] return list directly --- rq_dashboard/templates/rq_dashboard/job.html | 8 +++----- rq_dashboard/web.py | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/rq_dashboard/templates/rq_dashboard/job.html b/rq_dashboard/templates/rq_dashboard/job.html index b48d642..2b0ead2 100644 --- a/rq_dashboard/templates/rq_dashboard/job.html +++ b/rq_dashboard/templates/rq_dashboard/job.html @@ -29,11 +29,9 @@

Job ID: {{ id }}

<% if (d.depends_on) { %>
    <% - var dependsOnList = d.depends_on.split(','); - var dependsOnStatusList = d.depends_on_status.split(','); - for (var i = 0; i < dependsOnList.length; i++) { - var jobId = dependsOnList[i].trim(); - var status = dependsOnStatusList[i].trim(); + for (var i = 0; i < d.depends_on.length; i++) { + var jobId = d.depends_on[i].trim(); + var status = d.depends_on_status[i].trim(); %> <% if (status === "active") { %>
  • <%= jobId %>
  • diff --git a/rq_dashboard/web.py b/rq_dashboard/web.py index ea15493..bc5e498 100644 --- a/rq_dashboard/web.py +++ b/rq_dashboard/web.py @@ -592,7 +592,7 @@ def job_info(instance_number, job_id): ) dep_ids = [di.decode("utf-8").split(':')[-1].strip() for di in job.dependency_ids] if len(dep_ids) > 0: - result["depends_on"] = ','.join(dep_ids) + result["depends_on"] = dep_ids status = [] for dep_id in dep_ids: try: @@ -600,7 +600,7 @@ def job_info(instance_number, job_id): status.append('active') except NoSuchJobError: status.append('expired') - result["depends_on_status"] = ','.join(status) + result["depends_on_status"] = status return result From dfbb31f3abe2f2e22ae5dcbab0abf9b714e97c03 Mon Sep 17 00:00:00 2001 From: dopc Date: Fri, 24 May 2024 10:50:35 +0300 Subject: [PATCH 3/3] moved exc_info to top --- rq_dashboard/templates/rq_dashboard/job.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rq_dashboard/templates/rq_dashboard/job.html b/rq_dashboard/templates/rq_dashboard/job.html index 2b0ead2..e2676d3 100644 --- a/rq_dashboard/templates/rq_dashboard/job.html +++ b/rq_dashboard/templates/rq_dashboard/job.html @@ -18,6 +18,9 @@

    Job ID: {{ id }}