| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- from django.contrib.syndication.views import Feed
- from django.urls import reverse
- from django.utils.html import strip_tags
- from django.utils.feedgenerator import Atom1Feed
- from blog.models import Blog, Cat_Blog
- class LatestArticlesFeed(Feed):
- """
- Flux RSS pour les derniers articles du blog
- """
- title = "Blog Duhaz - Derniers articles"
- link = "/blog/"
- description = "Les derniers articles publiés sur le blog Duhaz"
-
- # Métadonnées du flux
- author_name = "Mr Duhaz"
- feed_copyright = "Copyright (c) Duhaz"
-
- # Nombre d'articles dans le flux
- feed_size = 20
-
- def items(self):
- """Retourne les derniers articles publiés"""
- return Blog.objects.filter(b_publier=True).order_by('-b_publdate')[:self.feed_size]
-
- def item_title(self, item):
- """Titre de l'article"""
- return item.b_titre
-
- def item_description(self, item):
- """Description de l'article (sans HTML)"""
- return strip_tags(item.b_description)
-
- def item_link(self, item):
- """Lien vers l'article"""
- return reverse('blog_play', args=[item.b_titre_slugify])
-
- def item_pubdate(self, item):
- """Date de publication"""
- return item.b_publdate
-
- def item_categories(self, item):
- """Catégories de l'article"""
- return [cat.cb_titre for cat in item.b_cat.all()]
-
- def item_author_name(self, item):
- """Auteur de l'article"""
- return "Mr Duhaz"
- class LatestArticlesAtomFeed(LatestArticlesFeed):
- """
- Flux Atom pour les derniers articles (alternative au RSS)
- """
- feed_type = Atom1Feed
- subtitle = LatestArticlesFeed.description
- class CategoryArticlesFeed(Feed):
- """
- Flux RSS par catégorie
- """
- author_name = "Mr Duhaz"
- feed_copyright = "Copyright (c) Duhaz"
- feed_size = 20
-
- def get_object(self, request, cat_slug):
- """Récupère la catégorie depuis l'URL"""
- return Cat_Blog.objects.get(cb_titre_slgify=cat_slug)
-
- def title(self, obj):
- return f"Blog Duhaz - Articles de la catégorie {obj.cb_titre}"
-
- def link(self, obj):
- return reverse('blog_cat', args=[obj.cb_titre_slgify])
-
- def description(self, obj):
- return f"Les derniers articles de la catégorie {obj.cb_titre}"
-
- def items(self, obj):
- """Retourne les articles de la catégorie"""
- return Blog.objects.filter(
- b_publier=True,
- b_cat=obj
- ).order_by('-b_publdate')[:self.feed_size]
-
- def item_title(self, item):
- return item.b_titre
-
- def item_description(self, item):
- return strip_tags(item.b_description)
-
- def item_link(self, item):
- return reverse('blog_play', args=[item.b_titre_slugify])
-
- def item_pubdate(self, item):
- return item.b_publdate
-
- def item_categories(self, item):
- return [cat.cb_titre for cat in item.b_cat.all()]
|