Skip to content

Commit 10539af

Browse files
petr.prikrylauvipy
authored andcommitted
fix: update PeriodicTask from entry (#344)
1 parent 51c5bd8 commit 10539af

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

django_celery_beat/schedulers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,13 @@ def from_entry(cls, name, app=None, **entry):
175175
def _unpack_fields(cls, schedule,
176176
args=None, kwargs=None, relative=None, options=None,
177177
**entry):
178+
entry_schedules = {
179+
model_field: None for _, _, model_field in cls.model_schedules
180+
}
178181
model_schedule, model_field = cls.to_model_schedule(schedule)
182+
entry_schedules[model_field] = model_schedule
179183
entry.update(
180-
{model_field: model_schedule},
184+
entry_schedules,
181185
args=dumps(args or []),
182186
kwargs=dumps(kwargs or {}),
183187
**cls._unpack_options(**options or {})

t/unit/test_schedulers.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ def create_model(self, Model=PeriodicTask, **kwargs):
109109
def create_interval_schedule(self):
110110
return IntervalSchedule.objects.create(every=10, period=DAYS)
111111

112+
def create_crontab_schedule(self):
113+
return CrontabSchedule.objects.create()
114+
112115

113116
@pytest.mark.django_db()
114117
class test_ModelEntry(SchedulerCase):
@@ -334,6 +337,16 @@ def test_periodic_task_model_disabled_schedule(self):
334337
assert 'celery.backend_cleanup' in sched
335338
assert self.entry_name not in sched
336339

340+
def test_periodic_task_model_schedule_type_change(self):
341+
self.m1.interval = None
342+
self.m1.crontab = self.create_crontab_schedule()
343+
self.m1.save()
344+
345+
self.Scheduler(app=self.app)
346+
self.m1.refresh_from_db()
347+
assert self.m1.interval
348+
assert self.m1.crontab is None
349+
337350

338351
@pytest.mark.django_db()
339352
class test_DatabaseScheduler(SchedulerCase):

0 commit comments

Comments
 (0)