Skip to content
This repository was archived by the owner on Mar 28, 2025. It is now read-only.

Commit f92adfd

Browse files
authored
feat: Admin improvements (#14)
* feat: Admin improvements - Add `last_run_finished_at` admin field - Add `unlock` admin action
1 parent 60a1c3e commit f92adfd

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

task_processor/admin.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
from datetime import datetime
2+
13
from django.contrib import admin
4+
from django.db.models import QuerySet
5+
from django.http import HttpRequest
26

37
from task_processor.models import RecurringTask
48

@@ -10,6 +14,7 @@ class RecurringTaskAdmin(admin.ModelAdmin):
1014
"task_identifier",
1115
"run_every",
1216
"last_run_status",
17+
"last_run_finished_at",
1318
"is_locked",
1419
)
1520
readonly_fields = ("args", "kwargs")
@@ -18,3 +23,16 @@ def last_run_status(self, instance: RecurringTask) -> str | None:
1823
if last_run := instance.task_runs.order_by("-started_at").first():
1924
return last_run.result
2025
return None
26+
27+
def last_run_finished_at(self, instance: RecurringTask) -> datetime | None:
28+
if last_run := instance.task_runs.order_by("-started_at").first():
29+
return last_run.finished_at
30+
return None
31+
32+
@admin.action(description="Unlock selected tasks")
33+
def unlock(
34+
self,
35+
request: HttpRequest,
36+
queryset: QuerySet[RecurringTask],
37+
) -> None:
38+
queryset.update(is_locked=False)

0 commit comments

Comments
 (0)