Skip to content

Update PeriodicTasks on bulk task enable/disable in admin. #492

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 1 commit into from
Dec 7, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions djcelery/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
from .models import (
TaskState, WorkerState,
PeriodicTask, IntervalSchedule, CrontabSchedule,
PeriodicTasks
)
from .humanize import naturaldate
from .utils import is_database_scheduler, make_aware
Expand Down Expand Up @@ -350,13 +351,20 @@ class PeriodicTaskAdmin(admin.ModelAdmin):
actions = ['enable_tasks',
'disable_tasks']

def update_periodic_tasks(self):
dummy_periodic_task = PeriodicTask()
dummy_periodic_task.no_changes = False
PeriodicTasks.changed(dummy_periodic_task)

@action(_('Enable selected periodic tasks'))
def enable_tasks(self, request, queryset):
queryset.update(enabled=True)
self.update_periodic_tasks()

@action(_('Disable selected periodic tasks'))
def disable_tasks(self, request, queryset):
queryset.update(enabled=False)
self.update_periodic_tasks()

def changelist_view(self, request, extra_context=None):
extra_context = extra_context or {}
Expand Down
7 changes: 6 additions & 1 deletion djcelery/tests/test_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
from django.test import RequestFactory, TestCase

from djcelery.admin import PeriodicTaskAdmin
from djcelery.models import PeriodicTask, IntervalSchedule, PERIOD_CHOICES
from djcelery.models import (
PeriodicTask, IntervalSchedule, PERIOD_CHOICES, PeriodicTasks
)


class MockRequest(object):
Expand Down Expand Up @@ -52,8 +54,11 @@ def test_enable_tasks_should_enable_disabled_periodic_tasks(self):
PeriodicTask.objects.create(name='Killer Queen', task='killer_queen',
interval=self.interval, enabled=False),
queryset = PeriodicTask.objects.filter(pk=1)
last_update = PeriodicTasks.objects.get(ident=1).last_update
self.pt_admin.enable_tasks(request, queryset)
new_last_update = PeriodicTasks.objects.get(ident=1).last_update
self.assertTrue(PeriodicTask.objects.get(pk=1).enabled)
self.assertNotEqual(last_update, new_last_update)

def test_disable_tasks_should_disable_enabled_periodic_tasks(self):
"""
Expand Down