diff --git a/src/newsreader/news/collection/tests/views/test_twitter_views.py b/src/newsreader/news/collection/tests/views/test_twitter_views.py index 4f178cc..35897be 100644 --- a/src/newsreader/news/collection/tests/views/test_twitter_views.py +++ b/src/newsreader/news/collection/tests/views/test_twitter_views.py @@ -1,9 +1,10 @@ - from django.test import TestCase from django.urls import reverse import pytz +from django_celery_beat.models import PeriodicTask + from newsreader.news.collection.choices import RuleTypeChoices from newsreader.news.collection.models import CollectionRule from newsreader.news.collection.tests.factories import TwitterTimelineFactory @@ -38,6 +39,12 @@ class TwitterTimelineCreateViewTestCase(CollectionRuleViewTestCase, TestCase): self.assertEquals(rule.category.pk, self.category.pk) self.assertEquals(rule.user.pk, self.user.pk) + self.assertTrue( + PeriodicTask.objects.get( + name=self.user.email, task="TwitterTimelineTask", enabled=True + ) + ) + class TwitterTimelineUpdateViewTestCase(CollectionRuleViewTestCase, TestCase): def setUp(self): diff --git a/src/newsreader/news/collection/views/twitter.py b/src/newsreader/news/collection/views/twitter.py index c60dbda..563bddf 100644 --- a/src/newsreader/news/collection/views/twitter.py +++ b/src/newsreader/news/collection/views/twitter.py @@ -1,5 +1,9 @@ +import json + from django.views.generic.edit import CreateView, UpdateView +from django_celery_beat.models import IntervalSchedule, PeriodicTask + from newsreader.news.collection.choices import RuleTypeChoices from newsreader.news.collection.forms import TwitterTimelineForm from newsreader.news.collection.views.base import ( @@ -14,6 +18,28 @@ class TwitterTimelineCreateView( form_class = TwitterTimelineForm template_name = "news/collection/views/twitter/timeline-create.html" + def form_valid(self, form): + response = super().form_valid(form) + + task_interval, _ = IntervalSchedule.objects.get_or_create( + every=1, period=IntervalSchedule.HOURS + ) + + task, _ = PeriodicTask.objects.get_or_create( + name=self.request.user.email, + task="TwitterTimelineTask", + enabled=True, + defaults={ + "args": json.dumps([self.request.user.pk]), + "interval": task_interval, + }, + ) + + self.request.user.task = task + self.request.user.save() + + return response + class TwitterTimelineUpdateView( CollectionRuleViewMixin, CollectionRuleDetailMixin, UpdateView