77from scheduler import tools
88from scheduler .models import TaskArg , TaskKwarg , Task
99from 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
1111
1212
1313class HiddenMixin (object ):
@@ -56,9 +56,7 @@ class Media:
5656 "function_string" ,
5757 "is_scheduled" ,
5858 "queue" ,
59- "scheduled_time" ,
60- "interval_display" ,
61- "cron_string" ,
59+ "task_schedule" ,
6260 "next_run" ,
6361 "successful_runs" ,
6462 "last_successful_run" ,
@@ -88,15 +86,15 @@ class Media:
8886 ),
8987 (
9088 None ,
91- dict (fields = ("scheduled_time" ,), classes = ("tasktype-OnceTask " ,)),
89+ dict (fields = ("scheduled_time" ,), classes = ("tasktype-OnceTaskType " ,)),
9290 ),
9391 (
9492 None ,
95- dict (fields = ("cron_string" ,), classes = ("tasktype-CronTask " ,)),
93+ dict (fields = ("cron_string" ,), classes = ("tasktype-CronTaskType " ,)),
9694 ),
9795 (
9896 None ,
99- dict (fields = ("interval" , "interval_unit" , "repeat" ), classes = ("tasktype-RepeatableTask " ,)),
97+ dict (fields = ("interval" , "interval_unit" , "repeat" ), classes = ("tasktype-RepeatableTaskType " ,)),
10098 ),
10199 (_ ("RQ Settings" ), dict (fields = (("queue" , "at_front" ), "job_id" ))),
102100 (
@@ -105,8 +103,19 @@ class Media:
105103 ),
106104 )
107105
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+
108117 @admin .display (description = "Next run" )
109- def next_run (self , o : Task ):
118+ def next_run (self , o : Task ) -> str :
110119 return tools .get_next_cron_time (o .cron_string )
111120
112121 def change_view (self , request , object_id , form_url = "" , extra_context = None ):
0 commit comments