#24 task-creation
This commit is contained in:
parent
fb709fe1d0
commit
bb0c2e792c
2 changed files with 57 additions and 11 deletions
|
|
@ -61,24 +61,29 @@ class User(AbstractUser):
|
|||
|
||||
def save(self, *args, **kwargs):
|
||||
if self._original_interval != self.task_interval:
|
||||
|
||||
if self.task_interval and self.task:
|
||||
self.task.interval = self.task_interval
|
||||
self.task.enabled = True
|
||||
self.task.save()
|
||||
|
||||
elif self.task_interval and not self.task:
|
||||
self.task = PeriodicTask.objects.create(
|
||||
enabled=True,
|
||||
interval=self.task_interval,
|
||||
name=f"{self.email}-collection-task",
|
||||
task="newsreader.news.collection.tasks",
|
||||
args=json.dumps([self.pk]),
|
||||
kwargs=None,
|
||||
)
|
||||
|
||||
elif not self.task_interval and self.task:
|
||||
self.task.enabled = False
|
||||
self.task.save()
|
||||
|
||||
if not self.task:
|
||||
self.task_interval, _ = IntervalSchedule.objects.get_or_create(
|
||||
every=1, period=IntervalSchedule.HOURS
|
||||
)
|
||||
|
||||
self.task = PeriodicTask.objects.create(
|
||||
enabled=True,
|
||||
interval=self.task_interval,
|
||||
name=f"{self.email}-collection-task",
|
||||
task="newsreader.news.collection.tasks",
|
||||
args=json.dumps([self.pk]),
|
||||
kwargs={},
|
||||
)
|
||||
|
||||
self._original_interval = self.task_interval
|
||||
|
||||
super().save(*args, **kwargs)
|
||||
|
|
|
|||
41
src/newsreader/accounts/tests/tests.py
Normal file
41
src/newsreader/accounts/tests/tests.py
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
from django.test import TestCase
|
||||
|
||||
from django_celery_beat.models import IntervalSchedule, PeriodicTask
|
||||
|
||||
from newsreader.accounts.models import User
|
||||
|
||||
|
||||
class UserTestCase(TestCase):
|
||||
def test_task_is_created(self):
|
||||
user = User.objects.create(email="durp@burp.nl", task=None, task_interval=None)
|
||||
|
||||
task = PeriodicTask.objects.get(name=f"{user.email}-collection-task")
|
||||
expected_interval = IntervalSchedule.objects.get(
|
||||
every=1, period=IntervalSchedule.HOURS
|
||||
)
|
||||
|
||||
self.assertEquals(task.interval, expected_interval)
|
||||
self.assertEquals(PeriodicTask.objects.count(), 1)
|
||||
|
||||
def test_task_is_updated(self):
|
||||
user = User.objects.create(email="durp@burp.nl", task=None, task_interval=None)
|
||||
|
||||
new_interval = IntervalSchedule.objects.create(
|
||||
every=2, period=IntervalSchedule.HOURS
|
||||
)
|
||||
user.task_interval = new_interval
|
||||
user.save()
|
||||
|
||||
task = PeriodicTask.objects.get(name=f"{user.email}-collection-task")
|
||||
|
||||
self.assertEquals(task.interval, new_interval)
|
||||
|
||||
def test_task_is_disabled(self):
|
||||
user = User.objects.create(email="durp@burp.nl", task=None, task_interval=None)
|
||||
|
||||
user.task_interval = None
|
||||
user.save()
|
||||
|
||||
task = PeriodicTask.objects.get(name=f"{user.email}-collection-task")
|
||||
|
||||
self.assertEquals(task.enabled, False)
|
||||
Loading…
Add table
Add a link
Reference in a new issue