39 lines
1 KiB
Python
39 lines
1 KiB
Python
from django.contrib.syndication.views import Feed
|
|
|
|
from articles.models import Article, Tag
|
|
from blog import settings
|
|
|
|
|
|
class CompleteFeed(Feed):
|
|
FEED_LIMIT = 15
|
|
title = settings.BLOG["title"]
|
|
link = settings.BLOG["base_url"]
|
|
description = settings.BLOG["description"]
|
|
|
|
def get_queryset(self, obj):
|
|
return Article.objects.filter(status=Article.PUBLISHED).order_by(
|
|
"-published_at"
|
|
)
|
|
|
|
def items(self, obj):
|
|
return self.get_queryset(obj)[: self.FEED_LIMIT]
|
|
|
|
def item_description(self, item: Article):
|
|
return item.get_formatted_content
|
|
|
|
def item_pubdate(self, item: Article):
|
|
return item.published_at
|
|
|
|
|
|
class TagFeed(CompleteFeed):
|
|
def get_object(self, request, *args, **kwargs):
|
|
return Tag.objects.get(slug=kwargs.get("slug"))
|
|
|
|
def get_queryset(self, tag):
|
|
return super().get_queryset(tag).filter(tags=tag)
|
|
|
|
def title(self, tag):
|
|
return tag.get_feed_title()
|
|
|
|
def link(self, tag):
|
|
return tag.get_absolute_url()
|