From a02e07727b54e7bee33469430049e04cd5415072 Mon Sep 17 00:00:00 2001 From: Barthelemy Dagenais Date: Mon, 7 Nov 2016 11:09:10 -0500 Subject: [PATCH] Update PeriodicTasks on bulk task enable/disable in admin. --- djcelery/admin.py | 8 ++++++++ djcelery/tests/test_admin.py | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/djcelery/admin.py b/djcelery/admin.py index a3bfec76..adfda8da 100644 --- a/djcelery/admin.py +++ b/djcelery/admin.py @@ -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 @@ -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 {} diff --git a/djcelery/tests/test_admin.py b/djcelery/tests/test_admin.py index ab419fdd..ad760589 100644 --- a/djcelery/tests/test_admin.py +++ b/djcelery/tests/test_admin.py @@ -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): @@ -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): """