From 2a14e3e124947663b95f3a95722398e1e9853663 Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Mon, 5 Dec 2016 16:00:50 +0100 Subject: [PATCH] rss: expose published announces only (#14731) --- corbo/views.py | 5 +++-- tests/test_announces.py | 25 ++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/corbo/views.py b/corbo/views.py index 4cc8fd5..f616942 100644 --- a/corbo/views.py +++ b/corbo/views.py @@ -1,9 +1,9 @@ -from datetime import datetime import urllib import json from django.conf import settings from django.core import signing +from django.utils import timezone from django.core.urlresolvers import reverse from django.views.generic import CreateView, UpdateView, DeleteView, \ ListView, TemplateView, RedirectView, DetailView @@ -202,7 +202,8 @@ class AtomView(Feed): self.__dict__.update(kwargs) def items(self): - return models.Announce.objects.exclude(expiration_time__lt=datetime.now()).order_by('-publication_time') + return models.Announce.objects.filter(publication_time__lte=timezone.now()).exclude( + expiration_time__lt=timezone.now()).order_by('-publication_time') def item_title(self, item): return item.title diff --git a/tests/test_announces.py b/tests/test_announces.py index 1e11275..521b26a 100644 --- a/tests/test_announces.py +++ b/tests/test_announces.py @@ -4,8 +4,10 @@ import mock import feedparser from django.core.files.storage import DefaultStorage +from django.utils import timezone +from django.core.urlresolvers import reverse -from corbo.models import Category +from corbo.models import Category, Announce pytestmark = pytest.mark.django_db @@ -62,3 +64,24 @@ def test_announces_from_feed(mocked_get): assert storage.url('logo.png') in announce.text # cleanup uploaded images os.unlink(storage.path('logo.png')) + + +def test_announces_publishing(app): + c = Category.objects.create(name='Test announces') + a = Announce.objects.create(category=c, title='Test 1', + text='text') + feed_content = feedparser.parse(app.get(reverse('atom')).text) + assert len(feed_content['entries']) == 0 + a.publication_time = timezone.now() + a.save() + feed_content = feedparser.parse(app.get(reverse('atom')).text) + assert len(feed_content['entries']) == 1 + a.publication_time = timezone.now() + timezone.timedelta(days=1) + a.save() + feed_content = feedparser.parse(app.get(reverse('atom')).text) + assert len(feed_content['entries']) == 0 + a.publication_time = timezone.now() + a.expiration_time = timezone.now() + a.save() + feed_content = feedparser.parse(app.get(reverse('atom')).text) + assert len(feed_content['entries']) == 0 -- 2.11.0