From 360e8b9f43df1b3962ee7afcc5a24c8d566e3a7d Mon Sep 17 00:00:00 2001 From: Kesara Rathnayake Date: Mon, 17 Jul 2023 18:24:36 +1200 Subject: [PATCH] feat: Add IAB blog feed --- ietf/blog/feeds.py | 9 +++++++++ ietf/blog/tests.py | 22 +++++++++++++++++++++- ietf/urls.py | 3 ++- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ietf/blog/feeds.py b/ietf/blog/feeds.py index 438259bc..cbb07cdd 100644 --- a/ietf/blog/feeds.py +++ b/ietf/blog/feeds.py @@ -36,3 +36,12 @@ def item_author_name(self, item): def item_pubdate(self, item): return item.date + +class IABBlogFeed(BlogFeed): + def items(self): + return ( + BlogPage.objects.live() + .filter(topics__topic__slug="iab") + .annotate(d=Coalesce("date_published", "first_published_at")) + .order_by("-d") + ) diff --git a/ietf/blog/tests.py b/ietf/blog/tests.py index f93e7f2f..43a88b51 100644 --- a/ietf/blog/tests.py +++ b/ietf/blog/tests.py @@ -5,7 +5,8 @@ from wagtail.models import Page, Site from ..home.models import HomePage -from .models import BlogIndexPage, BlogPage +from ..snippets.models import Topic +from .models import BlogIndexPage, BlogPage, BlogPageTopic class BlogTests(TestCase): @@ -100,3 +101,22 @@ def test_previous_next_links_correct(self): blog = BlogPage.objects.get(pk=self.blog.pk) self.assertEquals(self.prevblog, blog.previous) self.assertEquals(self.nextblog, blog.next) + + def test_blog_feed(self): + r = self.client.get(path='/blog/feed/') + self.assertEqual(r.status_code, 200) + self.assertIn(self.blog.url.encode(), r.content) + self.assertIn(self.otherblog.url.encode(), r.content) + + def test_iab_feed(self): + topic=Topic(title="iab", slug="iab") + topic.save() + iab_topic = BlogPageTopic(topic=topic, page=self.otherblog) + iab_topic.save() + self.otherblog.topics = [iab_topic, ] + self.otherblog.save() + + r = self.client.get(path='/blog/iab/feed/') + self.assertEqual(r.status_code, 200) + self.assertNotIn(self.blog.url.encode(), r.content) + self.assertIn(self.otherblog.url.encode(), r.content) diff --git a/ietf/urls.py b/ietf/urls.py index d1621e1f..0a04fcfc 100644 --- a/ietf/urls.py +++ b/ietf/urls.py @@ -8,7 +8,7 @@ from wagtail.documents import urls as wagtaildocs_urls from ietf.bibliography import urls as bibliography_urls -from ietf.blog.feeds import BlogFeed +from ietf.blog.feeds import BlogFeed, IABBlogFeed from ietf.search.views import search from ietf.snippets import urls as snippet_urls @@ -21,6 +21,7 @@ url(r"^bibliography/", include(bibliography_urls)), url(r"^django-admin/", admin.site.urls), url(r"^blog/feed/$", BlogFeed(), name="blog_feed"), + url(r"^blog/iab/feed/$", IABBlogFeed(), name="iab_blog_feed"), url(r"^admin/", include(wagtailadmin_urls)), url(r"^documents/", include(wagtaildocs_urls)), url(r"^search/$", search, name="search"),