From d8759d9a75c5243da4460519a6aac5d5a944795d Mon Sep 17 00:00:00 2001 From: Jordan Robinson Date: Sat, 20 Sep 2025 21:20:25 +0100 Subject: [PATCH] add blog setting for number of items to return in feed --- main/feeds.py | 2 +- .../0120_user_number_of_posts_feed.py | 18 ++++++++++++++++++ main/models.py | 7 +++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 main/migrations/0120_user_number_of_posts_feed.py diff --git a/main/feeds.py b/main/feeds.py index cb2d3a95a8b49c932dad4e042f7f048004f0618a..39b6dc6a82614581ab18968e1b203c33a3dfe69f 100644 --- a/main/feeds.py +++ b/main/feeds.py @@ -86,7 +86,7 @@ class RSSBlogFeed(Feed): owner__username=self.subdomain, published_at__isnull=False, published_at__lte=timezone.now().date(), - ).order_by("-published_at")[:10] + ).order_by("-published_at")[:self.user.number_of_posts_feed] def item_title(self, item): return item.title diff --git a/main/migrations/0120_user_number_of_posts_feed.py b/main/migrations/0120_user_number_of_posts_feed.py new file mode 100644 index 0000000000000000000000000000000000000000..f4251a64fc86ca5e5af0961d5885082a81e99813 --- /dev/null +++ b/main/migrations/0120_user_number_of_posts_feed.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.5 on 2025-09-20 20:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0119_remove_user_markdown_link_paste_on_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='number_of_posts_feed', + field=models.IntegerField(default=10, help_text='Number of posts to show in RSS/Atom feed. Default is 10.', verbose_name='Number of Posts in Feed'), + ), + ] diff --git a/main/models.py b/main/models.py index 67450c14ab564810cb050a86cdf38922694520d7..b5051aa228b77d2b9c263c1223cabc4bccaa9203 100644 --- a/main/models.py +++ b/main/models.py @@ -135,6 +135,13 @@ class User(AbstractUser): default="User-agent: *\nDisallow:\nAllow: /", ) export_unsubscribe_key = models.UUIDField(default=uuid.uuid4, unique=True) + number_of_posts_feed = models.IntegerField( + blank=False, + help_text="Number of posts to show in RSS/Atom feed. Default is 10.", + verbose_name="Number of Posts in Feed", + null=False, + default=10, + ) # webring related webring_name = models.CharField(max_length=200, blank=True, null=True)