diff --git a/main/feeds.py b/main/feeds.py new file mode 100644 index 0000000000000000000000000000000000000000..4b6c9d63d8efe44c83d0679f30f1acaf9d593d40 --- /dev/null +++ b/main/feeds.py @@ -0,0 +1,58 @@ +from django.contrib.syndication.views import Feed +from django.shortcuts import render +from django.urls import reverse +from main.models import MainArticlesPage, MainArticlePage + +class LatestArticlesFeed(Feed): + def get_object( + self: LatestArticlesFeed, + request, + title: str + ) -> MainArticlesPage: + return MainArticlesPage.objects.get(title=title) + + def title( + self: LatestArticlesFeed, + obj: MainArticlesPage + ) -> str: + return obj.title + + def link( + self: LatestArticlesFeed, + obj: MainArticlesPage + ) -> str: + return obj.get_full_url() + + def description( + self: LatestArticlesFeed, + obj: MainArticlesPage + ) -> str: + return obj.perex + + def items( + self: LatestArticlesFeed, + obj: MainArticlesPage + ) -> list: + return obj.get_children().type(MainArticlePage)[:32] + + def item_title( + self: LatestArticlesFeed, + obj: MainArticlePage + ) -> str: + return obj.title + + def item_description( + self: LatestArticlesFeed, + item: MainArticlePage + ): + return render( + None, + "main/feed_item_description.html", + {"item": item}, + ) + + def item_link( + self: LatestArticlesFeed, + item: MainArticlePage + ) -> str: + return item.get_full_url() diff --git a/main/templates/main/blocks/card_link_block.html b/main/templates/main/blocks/card_link_block.html index e642f0c4becab46273c67392664112c08e5e9fc3..06bc1bdd5144e7df80134d91204b46d4a60f63ea 100644 --- a/main/templates/main/blocks/card_link_block.html +++ b/main/templates/main/blocks/card_link_block.html @@ -16,7 +16,7 @@ <a href="{{ target_url }}"> {{ self.title }} </a> - </h1> + </h2> <div class="font-light text-sm break-words"> {{ self.text | default_if_none:'' | richtext }} </div> diff --git a/main/templates/main/feed_item_description.html b/main/templates/main/feed_item_description.html new file mode 100644 index 0000000000000000000000000000000000000000..e44f14f74b25f545705ed5a3431fb4c89d3b325a --- /dev/null +++ b/main/templates/main/feed_item_description.html @@ -0,0 +1,3 @@ +{% for block in item.content %} + {% include_block block %} +{% endfor %}