Skip to content

Commit 09ce8fc

Browse files
committed
black formatter
1 parent 667c6b0 commit 09ce8fc

38 files changed

+1620
-1220
lines changed

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ exclude = '''
9494
| buck-out
9595
| build
9696
| dist
97+
| scheduler/migrations
98+
| scheduler/templates
9799
)/
98100
| .*/__pycache__/.*
99101
)

scheduler/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import importlib.metadata
22

3-
__version__ = importlib.metadata.version('django-tasks-scheduler')
3+
__version__ = importlib.metadata.version("django-tasks-scheduler")
44

55
from .decorators import job # noqa: F401

scheduler/admin/redis_models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def has_module_permission(self, request):
2323
does not restrict access to the add, change or delete views. Use
2424
`ModelAdmin.has_(add|change|delete)_permission` for that.
2525
"""
26-
return request.user.has_module_perms('django-tasks-scheduler')
26+
return request.user.has_module_perms("django-tasks-scheduler")
2727

2828

2929
@admin.register(Queue)

scheduler/admin/task_models.py

Lines changed: 143 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -11,49 +11,99 @@
1111

1212
class HiddenMixin(object):
1313
class Media:
14-
js = ['admin/js/jquery.init.js', ]
14+
js = [
15+
"admin/js/jquery.init.js",
16+
]
1517

1618

1719
class JobArgInline(HiddenMixin, GenericStackedInline):
1820
model = TaskArg
1921
extra = 0
2022
fieldsets = (
21-
(None, {
22-
'fields': (('arg_type', 'val',),),
23-
}),
23+
(
24+
None,
25+
{
26+
"fields": (
27+
(
28+
"arg_type",
29+
"val",
30+
),
31+
),
32+
},
33+
),
2434
)
2535

2636

2737
class JobKwargInline(HiddenMixin, GenericStackedInline):
2838
model = TaskKwarg
2939
extra = 0
3040
fieldsets = (
31-
(None, {
32-
'fields': (('key',), ('arg_type', 'val',),),
33-
}),
41+
(
42+
None,
43+
{
44+
"fields": (
45+
("key",),
46+
(
47+
"arg_type",
48+
"val",
49+
),
50+
),
51+
},
52+
),
3453
)
3554

3655

3756
_LIST_DISPLAY_EXTRA = dict(
38-
CronTask=('cron_string', 'next_run', 'successful_runs', 'last_successful_run', 'failed_runs', 'last_failed_run',),
39-
ScheduledTask=('scheduled_time',),
57+
CronTask=(
58+
"cron_string",
59+
"next_run",
60+
"successful_runs",
61+
"last_successful_run",
62+
"failed_runs",
63+
"last_failed_run",
64+
),
65+
ScheduledTask=("scheduled_time",),
4066
RepeatableTask=(
41-
'scheduled_time', 'interval_display', 'successful_runs', 'last_successful_run', 'failed_runs',
42-
'last_failed_run',),
67+
"scheduled_time",
68+
"interval_display",
69+
"successful_runs",
70+
"last_successful_run",
71+
"failed_runs",
72+
"last_failed_run",
73+
),
4374
)
4475
_FIELDSET_EXTRA = dict(
4576
CronTask=(
46-
'cron_string', 'timeout', 'result_ttl',
47-
('successful_runs', 'last_successful_run',),
48-
('failed_runs', 'last_failed_run',),
77+
"cron_string",
78+
"timeout",
79+
"result_ttl",
80+
(
81+
"successful_runs",
82+
"last_successful_run",
83+
),
84+
(
85+
"failed_runs",
86+
"last_failed_run",
87+
),
4988
),
50-
ScheduledTask=('scheduled_time', 'timeout', 'result_ttl'),
89+
ScheduledTask=("scheduled_time", "timeout", "result_ttl"),
5190
RepeatableTask=(
52-
'scheduled_time',
53-
('interval', 'interval_unit',),
54-
'repeat', 'timeout', 'result_ttl',
55-
('successful_runs', 'last_successful_run',),
56-
('failed_runs', 'last_failed_run',),
91+
"scheduled_time",
92+
(
93+
"interval",
94+
"interval_unit",
95+
),
96+
"repeat",
97+
"timeout",
98+
"result_ttl",
99+
(
100+
"successful_runs",
101+
"last_successful_run",
102+
),
103+
(
104+
"failed_runs",
105+
"last_failed_run",
106+
),
57107
),
58108
)
59109

@@ -65,60 +115,94 @@ class TaskAdmin(admin.ModelAdmin):
65115
"""
66116

67117
save_on_top = True
68-
change_form_template = 'admin/scheduler/change_form.html'
69-
actions = ['disable_selected', 'enable_selected', 'enqueue_job_now', ]
70-
inlines = [JobArgInline, JobKwargInline, ]
71-
list_filter = ('enabled',)
72-
list_display = ('enabled', 'name', 'job_id', 'function_string', 'is_scheduled', 'queue',)
73-
list_display_links = ('name',)
74-
readonly_fields = ('job_id',)
118+
change_form_template = "admin/scheduler/change_form.html"
119+
actions = [
120+
"disable_selected",
121+
"enable_selected",
122+
"enqueue_job_now",
123+
]
124+
inlines = [
125+
JobArgInline,
126+
JobKwargInline,
127+
]
128+
list_filter = ("enabled",)
129+
list_display = (
130+
"enabled",
131+
"name",
132+
"job_id",
133+
"function_string",
134+
"is_scheduled",
135+
"queue",
136+
)
137+
list_display_links = ("name",)
138+
readonly_fields = ("job_id",)
75139
fieldsets = (
76-
(None, {
77-
'fields': ('name', 'callable', 'enabled', 'at_front',),
78-
}),
79-
(_('RQ Settings'), {
80-
'fields': ('queue', 'job_id',),
81-
}),
140+
(
141+
None,
142+
{
143+
"fields": (
144+
"name",
145+
"callable",
146+
"enabled",
147+
"at_front",
148+
),
149+
},
150+
),
151+
(
152+
_("RQ Settings"),
153+
{
154+
"fields": (
155+
"queue",
156+
"job_id",
157+
),
158+
},
159+
),
82160
)
83161

84162
def get_list_display(self, request):
85163
if self.model.__name__ not in _LIST_DISPLAY_EXTRA:
86-
raise ValueError(f'Unrecognized model {self.model}')
164+
raise ValueError(f"Unrecognized model {self.model}")
87165
return TaskAdmin.list_display + _LIST_DISPLAY_EXTRA[self.model.__name__]
88166

89167
def get_fieldsets(self, request, obj=None):
90168
if self.model.__name__ not in _FIELDSET_EXTRA:
91-
raise ValueError(f'Unrecognized model {self.model}')
92-
return TaskAdmin.fieldsets + ((_('Scheduling'), {
93-
'fields': _FIELDSET_EXTRA[self.model.__name__],
94-
}),)
95-
96-
@admin.display(description='Next run')
169+
raise ValueError(f"Unrecognized model {self.model}")
170+
return TaskAdmin.fieldsets + (
171+
(
172+
_("Scheduling"),
173+
{
174+
"fields": _FIELDSET_EXTRA[self.model.__name__],
175+
},
176+
),
177+
)
178+
179+
@admin.display(description="Next run")
97180
def next_run(self, o: CronTask):
98181
return tools.get_next_cron_time(o.cron_string)
99182

100-
def change_view(self, request, object_id, form_url='', extra_context=None):
183+
def change_view(self, request, object_id, form_url="", extra_context=None):
101184
extra = extra_context or {}
102185
obj = self.get_object(request, object_id)
103186
try:
104187
execution_list = get_job_executions(obj.queue, obj)
105188
except redis.ConnectionError as e:
106-
logger.warn(f'Could not get job executions: {e}')
189+
logger.warn(f"Could not get job executions: {e}")
107190
execution_list = list()
108-
paginator = self.get_paginator(request, execution_list, SCHEDULER_CONFIG['EXECUTIONS_IN_PAGE'])
109-
page_number = request.GET.get('p', 1)
191+
paginator = self.get_paginator(request, execution_list, SCHEDULER_CONFIG["EXECUTIONS_IN_PAGE"])
192+
page_number = request.GET.get("p", 1)
110193
page_obj = paginator.get_page(page_number)
111194
page_range = paginator.get_elided_page_range(page_obj.number)
112195

113-
extra.update({
114-
"pagination_required": paginator.count > SCHEDULER_CONFIG['EXECUTIONS_IN_PAGE'],
115-
'executions': page_obj,
116-
'page_range': page_range,
117-
'page_var': 'p',
118-
})
196+
extra.update(
197+
{
198+
"pagination_required": paginator.count > SCHEDULER_CONFIG["EXECUTIONS_IN_PAGE"],
199+
"executions": page_obj,
200+
"page_range": page_range,
201+
"page_var": "p",
202+
}
203+
)
119204

120-
return super(TaskAdmin, self).change_view(
121-
request, object_id, form_url, extra_context=extra)
205+
return super(TaskAdmin, self).change_view(request, object_id, form_url, extra_context=extra)
122206

123207
def delete_queryset(self, request, queryset):
124208
for job in queryset:
@@ -129,7 +213,7 @@ def delete_model(self, request, obj):
129213
obj.unschedule()
130214
super(TaskAdmin, self).delete_model(request, obj)
131215

132-
@admin.action(description=_("Disable selected %(verbose_name_plural)s"), permissions=('change',))
216+
@admin.action(description=_("Disable selected %(verbose_name_plural)s"), permissions=("change",))
133217
def disable_selected(self, request, queryset):
134218
rows_updated = 0
135219
for obj in queryset.filter(enabled=True).iterator():
@@ -142,7 +226,7 @@ def disable_selected(self, request, queryset):
142226
level = messages.WARNING if not rows_updated else messages.INFO
143227
self.message_user(request, f"{message_bit} successfully disabled and unscheduled.", level=level)
144228

145-
@admin.action(description=_("Enable selected %(verbose_name_plural)s"), permissions=('change',))
229+
@admin.action(description=_("Enable selected %(verbose_name_plural)s"), permissions=("change",))
146230
def enable_selected(self, request, queryset):
147231
rows_updated = 0
148232
for obj in queryset.filter(enabled=False).iterator():
@@ -154,10 +238,13 @@ def enable_selected(self, request, queryset):
154238
level = messages.WARNING if not rows_updated else messages.INFO
155239
self.message_user(request, f"{message_bit} successfully enabled and scheduled.", level=level)
156240

157-
@admin.action(description="Enqueue now", permissions=('change',))
241+
@admin.action(description="Enqueue now", permissions=("change",))
158242
def enqueue_job_now(self, request, queryset):
159243
task_names = []
160244
for task in queryset:
161245
task.enqueue_to_run()
162246
task_names.append(task.name)
163-
self.message_user(request, f"The following jobs have been enqueued: {', '.join(task_names)}", )
247+
self.message_user(
248+
request,
249+
f"The following jobs have been enqueued: {', '.join(task_names)}",
250+
)

scheduler/apps.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33

44

55
class SchedulerConfig(AppConfig):
6-
default_auto_field = 'django.db.models.AutoField'
7-
name = 'scheduler'
8-
verbose_name = _('Tasks Scheduler')
6+
default_auto_field = "django.db.models.AutoField"
7+
name = "scheduler"
8+
verbose_name = _("Tasks Scheduler")
99

1010
def ready(self):
1111
pass

scheduler/decorators.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ def job(*args, **kwargs):
1313
"""
1414
if len(args) == 0:
1515
func = None
16-
queue = 'default'
16+
queue = "default"
1717
else:
1818
if callable(args[0]):
1919
func = args[0]
20-
queue = 'default'
20+
queue = "default"
2121
else:
2222
func = None
2323
queue = args[0]
@@ -26,15 +26,15 @@ def job(*args, **kwargs):
2626
if isinstance(queue, str):
2727
try:
2828
queue = get_queue(queue)
29-
if 'connection' not in kwargs:
30-
kwargs['connection'] = queue.connection
29+
if "connection" not in kwargs:
30+
kwargs["connection"] = queue.connection
3131
except KeyError:
32-
raise QueueNotFoundError(f'Queue {queue} does not exist')
32+
raise QueueNotFoundError(f"Queue {queue} does not exist")
3333

3434
config = settings.SCHEDULER_CONFIG
3535

36-
kwargs.setdefault('result_ttl', config.get('DEFAULT_RESULT_TTL'))
37-
kwargs.setdefault('timeout', config.get('DEFAULT_TIMEOUT'))
36+
kwargs.setdefault("result_ttl", config.get("DEFAULT_RESULT_TTL"))
37+
kwargs.setdefault("timeout", config.get("DEFAULT_TIMEOUT"))
3838

3939
decorator = rq_job_decorator(queue, *args, **kwargs)
4040
if func:

scheduler/management/commands/delete_failed_executions.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,24 @@
66

77

88
class Command(BaseCommand):
9-
help = 'Delete failed jobs from Django queue.'
9+
help = "Delete failed jobs from Django queue."
1010

1111
def add_arguments(self, parser):
12-
parser.add_argument(
13-
'--queue', '-q', dest='queue', default='default',
14-
help='Specify the queue [default]')
15-
parser.add_argument('-f', '--func', help='optional job function name, e.g. "app.tasks.func"')
16-
parser.add_argument('--dry-run', action='store_true', help='Do not actually delete failed jobs')
12+
parser.add_argument("--queue", "-q", dest="queue", default="default", help="Specify the queue [default]")
13+
parser.add_argument("-f", "--func", help='optional job function name, e.g. "app.tasks.func"')
14+
parser.add_argument("--dry-run", action="store_true", help="Do not actually delete failed jobs")
1715

1816
def handle(self, *args, **options):
19-
queue = get_queue(options.get('queue', 'default'))
17+
queue = get_queue(options.get("queue", "default"))
2018
job_ids = queue.failed_job_registry.get_job_ids()
2119
jobs = JobExecution.fetch_many(job_ids, connection=queue.connection)
22-
func_name = options.get('func', None)
20+
func_name = options.get("func", None)
2321
if func_name is not None:
2422
jobs = [job for job in jobs if job.func_name == func_name]
25-
dry_run = options.get('dry_run', False)
26-
click.echo(f'Found {len(jobs)} failed jobs')
23+
dry_run = options.get("dry_run", False)
24+
click.echo(f"Found {len(jobs)} failed jobs")
2725
for job in jobs:
28-
click.echo(f'Deleting {job.id}')
26+
click.echo(f"Deleting {job.id}")
2927
if not dry_run:
3028
job.delete()
31-
click.echo(f'Deleted {len(jobs)} failed jobs')
29+
click.echo(f"Deleted {len(jobs)} failed jobs")

0 commit comments

Comments
 (0)