Skip to content

Commit 123aa2d

Browse files
committed
Additional admin actions to cancel or abort jobs
1 parent b9845a1 commit 123aa2d

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

procrastinate/contrib/django/admin.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,20 @@ def retry(self, request: HttpRequest, queryset: QuerySet[models.ProcrastinateJob
145145
p_job.id, p_job.priority, p_job.queue, p_job.lock
146146
)
147147

148-
actions = [retry]
148+
@admin.action(description="Cancel Job (only 'todo' jobs)")
149+
def cancel(self, request: HttpRequest, queryset: QuerySet[models.ProcrastinateJob]):
150+
app_config: ProcrastinateConfig = apps.get_app_config("procrastinate")
151+
p_app: App = app_config.app
152+
for job in queryset.filter(status=Status.TODO.value):
153+
p_job = job.procrastinate_job
154+
p_app.job_manager.cancel_job_by_id(p_job.id, abort=False)
155+
156+
@admin.action(description="Abort Job (includes 'todo' & 'doing' jobs)")
157+
def abort(self, request: HttpRequest, queryset: QuerySet[models.ProcrastinateJob]):
158+
app_config: ProcrastinateConfig = apps.get_app_config("procrastinate")
159+
p_app: App = app_config.app
160+
for job in queryset.filter(status__in=(Status.TODO.value, Status.DOING.value)):
161+
p_job = job.procrastinate_job
162+
p_app.job_manager.cancel_job_by_id(p_job.id, abort=True)
163+
164+
actions = [retry, cancel, abort]

0 commit comments

Comments
 (0)