Add TwitterTimeline task upon Twitter timeline creation

This commit is contained in:
Sonny Bakker 2020-09-26 17:25:32 +02:00
parent 14fb17b334
commit c830a42cc6
2 changed files with 34 additions and 1 deletions

View file

@ -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):

View file

@ -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