diff --git a/rq_dashboard/templates/rq_dashboard/job.html b/rq_dashboard/templates/rq_dashboard/job.html index 053241f..e2676d3 100644 --- a/rq_dashboard/templates/rq_dashboard/job.html +++ b/rq_dashboard/templates/rq_dashboard/job.html @@ -18,23 +18,39 @@

Job ID: {{ id }}

diff --git a/rq_dashboard/web.py b/rq_dashboard/web.py index e2fe2e6..bc5e498 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"] = 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"] = status + return result @blueprint.route("//data/workers.json")