@@ -34,19 +34,24 @@ class JobKwargInline(HiddenMixin, GenericStackedInline):
34
34
)
35
35
36
36
37
+ _LIST_DISPLAY_EXTRA = dict (
38
+ CronTask = ('cron_string' , 'next_run' ,),
39
+ ScheduledTask = ('scheduled_time' ,),
40
+ RepeatableTask = ('scheduled_time' , 'interval_display' ,),
41
+ )
42
+ _FIELDSET_EXTRA = dict (
43
+ CronTask = ('cron_string' , 'repeat' , 'timeout' , 'result_ttl' ,),
44
+ ScheduledTask = ('scheduled_time' , 'timeout' , 'result_ttl' ),
45
+ RepeatableTask = ('scheduled_time' , ('interval' , 'interval_unit' ,), 'repeat' , 'timeout' , 'result_ttl' ,),
46
+ )
47
+
48
+
37
49
@admin .register (CronTask , ScheduledTask , RepeatableTask )
38
- class JobAdmin (admin .ModelAdmin ):
39
- LIST_DISPLAY_EXTRA = dict (
40
- CronTask = ('cron_string' , 'next_run' ,),
41
- ScheduledTask = ('scheduled_time' ,),
42
- RepeatableTask = ('scheduled_time' , 'interval_display' ),
43
- )
44
- FIELDSET_EXTRA = dict (
45
- CronTask = ('cron_string' , 'repeat' , 'timeout' , 'result_ttl' ,),
46
- ScheduledTask = ('scheduled_time' , 'timeout' , 'result_ttl' ),
47
- RepeatableTask = ('scheduled_time' , ('interval' , 'interval_unit' ,), 'repeat' , 'timeout' , 'result_ttl' ,),
48
- )
49
- """BaseJob admin class"""
50
+ class TaskAdmin (admin .ModelAdmin ):
51
+ """TaskAdmin admin view for all task models.
52
+ Using the _LIST_DISPLAY_EXTRA and _FIELDSET_EXTRA additional data for each model.
53
+ """
54
+
50
55
save_on_top = True
51
56
change_form_template = 'admin/scheduler/change_form.html'
52
57
actions = ['disable_selected' , 'enable_selected' , 'enqueue_job_now' , ]
@@ -65,15 +70,15 @@ class JobAdmin(admin.ModelAdmin):
65
70
)
66
71
67
72
def get_list_display (self , request ):
68
- if self .model .__name__ not in JobAdmin . LIST_DISPLAY_EXTRA :
73
+ if self .model .__name__ not in _LIST_DISPLAY_EXTRA :
69
74
raise ValueError (f'Unrecognized model { self .model } ' )
70
- return JobAdmin .list_display + JobAdmin . LIST_DISPLAY_EXTRA [self .model .__name__ ]
75
+ return TaskAdmin .list_display + _LIST_DISPLAY_EXTRA [self .model .__name__ ]
71
76
72
77
def get_fieldsets (self , request , obj = None ):
73
- if self .model .__name__ not in JobAdmin . FIELDSET_EXTRA :
78
+ if self .model .__name__ not in _FIELDSET_EXTRA :
74
79
raise ValueError (f'Unrecognized model { self .model } ' )
75
- return JobAdmin .fieldsets + ((_ ('Scheduling' ), {
76
- 'fields' : JobAdmin . FIELDSET_EXTRA [self .model .__name__ ],
80
+ return TaskAdmin .fieldsets + ((_ ('Scheduling' ), {
81
+ 'fields' : _FIELDSET_EXTRA [self .model .__name__ ],
77
82
}),)
78
83
79
84
@admin .display (description = 'Next run' )
@@ -100,17 +105,17 @@ def change_view(self, request, object_id, form_url='', extra_context=None):
100
105
'page_var' : 'p' ,
101
106
})
102
107
103
- return super (JobAdmin , self ).change_view (
108
+ return super (TaskAdmin , self ).change_view (
104
109
request , object_id , form_url , extra_context = extra )
105
110
106
111
def delete_queryset (self , request , queryset ):
107
112
for job in queryset :
108
113
job .unschedule ()
109
- super (JobAdmin , self ).delete_queryset (request , queryset )
114
+ super (TaskAdmin , self ).delete_queryset (request , queryset )
110
115
111
116
def delete_model (self , request , obj ):
112
117
obj .unschedule ()
113
- super (JobAdmin , self ).delete_model (request , obj )
118
+ super (TaskAdmin , self ).delete_model (request , obj )
114
119
115
120
@admin .action (description = _ ("Disable selected %(verbose_name_plural)s" ), permissions = ('change' ,))
116
121
def disable_selected (self , request , queryset ):
0 commit comments