Skip to content

Commit

Permalink
Fixed #1573 -- Hid non-approved feed items in RSS feeds
Browse files Browse the repository at this point in the history
  • Loading branch information
bmispelon committed Jul 1, 2024
1 parent 043fb05 commit ad58933
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 6 deletions.
10 changes: 7 additions & 3 deletions aggregator/feeds.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@


class BaseCommunityAggregatorFeed(Feed):
def items(self):
return FeedItem.objects.approved().order_by("-date_modified")

def item_title(self, item):
return item.title

Expand Down Expand Up @@ -33,8 +36,8 @@ def get_object(self, request, slug=None):
return get_object_or_404(FeedType, slug=slug)

def items(self, obj):
qs = FeedItem.objects.filter(feed__feed_type=obj)
qs = qs.order_by("-date_modified")
qs = super().items()
qs = qs.filter(feed__feed_type=obj)
qs = qs.select_related("feed", "feed__feed_type")
return qs[:25]

Expand All @@ -56,5 +59,6 @@ def link(self):
return reverse("aggregator-firehose-feed", host="www")

def items(self):
qs = FeedItem.objects.order_by("-date_modified").select_related("feed")
qs = super().items()
qs = qs.select_related("feed")
return qs[:50]
9 changes: 7 additions & 2 deletions aggregator/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,10 @@ def __str__(self):
return f"{self.name}"

def items(self):
return FeedItem.objects.select_related("feed", "feed__feed_type").filter(
feed__feed_type=self
return (
FeedItem.objects.approved()
.filter(feed__feed_type=self)
.select_related("feed", "feed__feed_type")
)


Expand Down Expand Up @@ -113,6 +115,9 @@ def create_or_update_by_guid(self, guid, **kwargs):

return item

def approved(self):
return self.filter(feed__approval_status=APPROVED_FEED)


class FeedItem(models.Model):
feed = models.ForeignKey(Feed, on_delete=models.CASCADE)
Expand Down
25 changes: 24 additions & 1 deletion aggregator/tests.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import datetime
from operator import attrgetter

import requests_mock
from django.conf import settings
Expand All @@ -11,7 +12,7 @@
from docs.models import DocumentRelease
from releases.models import Release

from . import models
from . import feeds, models
from .forms import FeedModelForm


Expand Down Expand Up @@ -120,6 +121,28 @@ def test_management_command_sends_email_with_pending_feeds(self):
self.assertEqual(1, len(mail.outbox))
self.assertEqual(mail.outbox[0].to, [self.user.email])

def test_feeditem_approved(self):
self.assertQuerySetEqual(
models.FeedItem.objects.approved(),
["Approved long URL Item", "Approved Item"],
transform=attrgetter("title"),
)

def test_community_feed_has_only_approved(self):
feed = feeds.CommunityAggregatorFeed()
self.assertQuerySetEqual(
feed.items(self.feed_type),
["Approved long URL Item", "Approved Item"],
transform=attrgetter("title"),
)

def test_feedtype_items_has_only_approved(self):
self.assertQuerySetEqual(
self.feed_type.items(),
["Approved long URL Item", "Approved Item"],
transform=attrgetter("title"),
)


class TestForms(SimpleTestCase):
def test_rejects_stackoverflow_questions(self):
Expand Down

0 comments on commit ad58933

Please sign in to comment.