Skip to content

Commit

Permalink
Single job view update for scheduled jobs
Browse files Browse the repository at this point in the history
Also now  displays dependant jobs for deferred jobs 
Closes: Parallels#315
n
  • Loading branch information
coolhacker authored and Ivan Kiryanov committed Feb 1, 2020
1 parent 5000b3d commit 5a384d7
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 16 deletions.
13 changes: 12 additions & 1 deletion rq_dashboard/templates/rq_dashboard/job.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,18 @@ <h2><strong>Job ID</strong>: {{ id }}</h2>

<span class="col-6">
<p><strong>Created at</strong>:<br> <%= d.created_at %></p>
<p><strong>Enqueued at</strong>:<br> <%= d.enqueued_at %></p>
<% if (d.status === 'deferred') { %>
<p>
<strong>Dependant jobs</strong>:<br>
<a href='<%= url_for_single_job_view(d.enqueued_at) %>'>
<%= d.enqueued_at %>
</a>
<% } else { %>
<p>
<strong>Enqueued at</strong>:<br>
<%= d.enqueued_at %>
</p>
<% } %>
<% if (d.exc_info) { %>
<p><strong>Ended at</strong>:<br> <%= d.ended_at %></p>
<% } %>
Expand Down
2 changes: 1 addition & 1 deletion rq_dashboard/templates/rq_dashboard/scripts/job.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
$job_data.empty();

job.created_at = toRelative(Date.create(job.created_at)) + ' / ' + toShort(Date.create(job.created_at));
if (job.enqueued_at !== undefined) {
if (job.enqueued_at !== undefined & job.status !== "deferred") {
job.enqueued_at = toRelative(Date.create(job.enqueued_at)) + ' / ' + toShort(Date.create(job.enqueued_at));
}
if (job.ended_at !== undefined) {
Expand Down
8 changes: 6 additions & 2 deletions rq_dashboard/templates/rq_dashboard/scripts/jobs.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,14 @@
$.each(jobs, function(i, job) {
job.long_created_at = toShort(Date.create(job.created_at));
job.created_at = toRelative(Date.create(job.created_at));
if (job.enqueued_at !== undefined) {
job.long_enqueued_at = toShort(Date.create(job.enqueued_at))
if (Date.create(job.enqueued_at).toString() !== 'Invalid Date') {
job.long_enqueued_at = toShort(Date.create(job.enqueued_at));
job.enqueued_at = toRelative(Date.create(job.enqueued_at));
}
else {
job.long_enqueued_at = job.enqueued_at;
job.enqueued_at = "Deferred";
}
if (job.ended_at !== undefined) {
job.ended_at = toRelative(Date.create(job.ended_at));
}
Expand Down
32 changes: 20 additions & 12 deletions rq_dashboard/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,15 +235,19 @@ def serialize_date(dt):


def serialize_job(job):
enqueued_at = (
job.enqueued_at
if job.enqueued_at
else ScheduledJobRegistry(job.origin).get_scheduled_time(job)
)
if job.is_deferred:
enqueued_at = "Awaiting completion: " + job._dependency_id
elif (
not job.enqueued_at # This means that the job is scheduled cause only deferred or scheduled jobs enqueued_at field is Null
):
enqueued_at = ScheduledJobRegistry(job.origin).get_scheduled_time(job)
enqueued_at = serialize_date(enqueued_at)
else:
enqueued_at = serialize_date(job.enqueued_at)
return dict(
id=job.id,
created_at=serialize_date(job.created_at),
enqueued_at=serialize_date(enqueued_at),
enqueued_at=enqueued_at,
ended_at=serialize_date(job.ended_at),
exc_info=str(job.exc_info) if job.exc_info else None,
description=job.description,
Expand Down Expand Up @@ -597,15 +601,19 @@ 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)
enqueued_at = (
job.enqueued_at
if job.enqueued_at
else ScheduledJobRegistry(job.origin).get_scheduled_time(job)
)
if job.is_deferred:
enqueued_at = job._dependency_id
elif (
not job.enqueued_at # This means that the job is scheduled cause only deferred or scheduled jobs enqueued_at field is Null
):
enqueued_at = ScheduledJobRegistry(job.origin).get_scheduled_time(job)
enqueued_at = serialize_date(enqueued_at)
else:
enqueued_at = serialize_date(job.enqueued_at)
return dict(
id=job.id,
created_at=serialize_date(job.created_at),
enqueued_at=serialize_date(enqueued_at),
enqueued_at=enqueued_at,
ended_at=serialize_date(job.ended_at),
origin=job.origin,
status=job.get_status(),
Expand Down

0 comments on commit 5a384d7

Please sign in to comment.