7
7
from scheduler import tools
8
8
from scheduler .models import TaskArg , TaskKwarg , Task
9
9
from scheduler .settings import SCHEDULER_CONFIG , logger
10
- from scheduler .tools import get_job_executions_for_task
10
+ from scheduler .tools import get_job_executions_for_task , TaskType
11
11
12
12
13
13
class HiddenMixin (object ):
@@ -56,9 +56,7 @@ class Media:
56
56
"function_string" ,
57
57
"is_scheduled" ,
58
58
"queue" ,
59
- "scheduled_time" ,
60
- "interval_display" ,
61
- "cron_string" ,
59
+ "task_schedule" ,
62
60
"next_run" ,
63
61
"successful_runs" ,
64
62
"last_successful_run" ,
@@ -88,15 +86,15 @@ class Media:
88
86
),
89
87
(
90
88
None ,
91
- dict (fields = ("scheduled_time" ,), classes = ("tasktype-OnceTask " ,)),
89
+ dict (fields = ("scheduled_time" ,), classes = ("tasktype-OnceTaskType " ,)),
92
90
),
93
91
(
94
92
None ,
95
- dict (fields = ("cron_string" ,), classes = ("tasktype-CronTask " ,)),
93
+ dict (fields = ("cron_string" ,), classes = ("tasktype-CronTaskType " ,)),
96
94
),
97
95
(
98
96
None ,
99
- dict (fields = ("interval" , "interval_unit" , "repeat" ), classes = ("tasktype-RepeatableTask " ,)),
97
+ dict (fields = ("interval" , "interval_unit" , "repeat" ), classes = ("tasktype-RepeatableTaskType " ,)),
100
98
),
101
99
(_ ("RQ Settings" ), dict (fields = (("queue" , "at_front" ), "job_id" ))),
102
100
(
@@ -105,8 +103,19 @@ class Media:
105
103
),
106
104
)
107
105
106
+ @admin .display (description = "Schedule" )
107
+ def task_schedule (self , o : Task ) -> str :
108
+ if o .task_type == TaskType .ONCE .value :
109
+ return f"Run once: { o .scheduled_time :%Y-%m-%d %H:%M:%S} "
110
+ elif o .task_type == TaskType .CRON .value :
111
+ return f"Cron: { o .cron_string } "
112
+ elif o .task_type == TaskType .REPEATABLE .value :
113
+ if o .interval is None or o .interval_unit is None :
114
+ return ""
115
+ return "Repeatable: {} {}" .format (o .interval , o .get_interval_unit_display ())
116
+
108
117
@admin .display (description = "Next run" )
109
- def next_run (self , o : Task ):
118
+ def next_run (self , o : Task ) -> str :
110
119
return tools .get_next_cron_time (o .cron_string )
111
120
112
121
def change_view (self , request , object_id , form_url = "" , extra_context = None ):
0 commit comments