Skip to content

Commit 65d1962

Browse files
bartdagauvipy
authored andcommitted
Update PeriodicTasks on bulk task enable/disable in admin. (#492)
1 parent 1775d1e commit 65d1962

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

djcelery/admin.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from .models import (
2424
TaskState, WorkerState,
2525
PeriodicTask, IntervalSchedule, CrontabSchedule,
26+
PeriodicTasks
2627
)
2728
from .humanize import naturaldate
2829
from .utils import is_database_scheduler, make_aware
@@ -350,13 +351,20 @@ class PeriodicTaskAdmin(admin.ModelAdmin):
350351
actions = ['enable_tasks',
351352
'disable_tasks']
352353

354+
def update_periodic_tasks(self):
355+
dummy_periodic_task = PeriodicTask()
356+
dummy_periodic_task.no_changes = False
357+
PeriodicTasks.changed(dummy_periodic_task)
358+
353359
@action(_('Enable selected periodic tasks'))
354360
def enable_tasks(self, request, queryset):
355361
queryset.update(enabled=True)
362+
self.update_periodic_tasks()
356363

357364
@action(_('Disable selected periodic tasks'))
358365
def disable_tasks(self, request, queryset):
359366
queryset.update(enabled=False)
367+
self.update_periodic_tasks()
360368

361369
def changelist_view(self, request, extra_context=None):
362370
extra_context = extra_context or {}

djcelery/tests/test_admin.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
from django.test import RequestFactory, TestCase
55

66
from djcelery.admin import PeriodicTaskAdmin
7-
from djcelery.models import PeriodicTask, IntervalSchedule, PERIOD_CHOICES
7+
from djcelery.models import (
8+
PeriodicTask, IntervalSchedule, PERIOD_CHOICES, PeriodicTasks
9+
)
810

911

1012
class MockRequest(object):
@@ -52,8 +54,11 @@ def test_enable_tasks_should_enable_disabled_periodic_tasks(self):
5254
PeriodicTask.objects.create(name='Killer Queen', task='killer_queen',
5355
interval=self.interval, enabled=False),
5456
queryset = PeriodicTask.objects.filter(pk=1)
57+
last_update = PeriodicTasks.objects.get(ident=1).last_update
5558
self.pt_admin.enable_tasks(request, queryset)
59+
new_last_update = PeriodicTasks.objects.get(ident=1).last_update
5660
self.assertTrue(PeriodicTask.objects.get(pk=1).enabled)
61+
self.assertNotEqual(last_update, new_last_update)
5762

5863
def test_disable_tasks_should_disable_enabled_periodic_tasks(self):
5964
"""

0 commit comments

Comments
 (0)