Add TwitterTimeline task upon Twitter timeline creation
This commit is contained in:
parent
14fb17b334
commit
c830a42cc6
2 changed files with 34 additions and 1 deletions
|
|
@ -1,9 +1,10 @@
|
||||||
|
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
import pytz
|
import pytz
|
||||||
|
|
||||||
|
from django_celery_beat.models import PeriodicTask
|
||||||
|
|
||||||
from newsreader.news.collection.choices import RuleTypeChoices
|
from newsreader.news.collection.choices import RuleTypeChoices
|
||||||
from newsreader.news.collection.models import CollectionRule
|
from newsreader.news.collection.models import CollectionRule
|
||||||
from newsreader.news.collection.tests.factories import TwitterTimelineFactory
|
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.category.pk, self.category.pk)
|
||||||
self.assertEquals(rule.user.pk, self.user.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):
|
class TwitterTimelineUpdateViewTestCase(CollectionRuleViewTestCase, TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
|
import json
|
||||||
|
|
||||||
from django.views.generic.edit import CreateView, UpdateView
|
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.choices import RuleTypeChoices
|
||||||
from newsreader.news.collection.forms import TwitterTimelineForm
|
from newsreader.news.collection.forms import TwitterTimelineForm
|
||||||
from newsreader.news.collection.views.base import (
|
from newsreader.news.collection.views.base import (
|
||||||
|
|
@ -14,6 +18,28 @@ class TwitterTimelineCreateView(
|
||||||
form_class = TwitterTimelineForm
|
form_class = TwitterTimelineForm
|
||||||
template_name = "news/collection/views/twitter/timeline-create.html"
|
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(
|
class TwitterTimelineUpdateView(
|
||||||
CollectionRuleViewMixin, CollectionRuleDetailMixin, UpdateView
|
CollectionRuleViewMixin, CollectionRuleDetailMixin, UpdateView
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue