from django.conf import settings from django.contrib.syndication.views import Feed from django.shortcuts import get_object_or_404 from taggit.models import Tag from apps.blog.models import ArticlePage class AllArticlesFeed(Feed): title = "No Hype AI" link = "/articles/" description = "Honest AI coding tool reviews for developers." def get_object(self, request): self.request = request return None def items(self): return ArticlePage.objects.live().order_by("-first_published_at")[:20] def item_title(self, item: ArticlePage): return item.title def item_description(self, item: ArticlePage): return item.summary def item_pubdate(self, item: ArticlePage): return item.first_published_at def item_author_name(self, item: ArticlePage): return item.author.name def item_link(self, item: ArticlePage): if hasattr(self, "request") and self.request is not None: full_url = item.get_full_url(self.request) if full_url: return full_url return f"{settings.WAGTAILADMIN_BASE_URL.rstrip('/')}{item.url}" class TagArticlesFeed(AllArticlesFeed): def get_object(self, request, tag_slug: str): self.request = request return get_object_or_404(Tag, slug=tag_slug) def title(self, obj): return f"No Hype AI — {obj.name}" def items(self, obj): return ArticlePage.objects.live().filter(tags=obj).order_by("-first_published_at")[:20]