From 2c191c6dc3fbf9772a4813a79975dec3dfe73a60 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 16 Dec 2016 13:34:39 +0100 Subject: [PATCH] misc: include tags as dc:subject in podcast feed --- panikweb/views.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/panikweb/views.py b/panikweb/views.py index 471c26a..a95d7e5 100644 --- a/panikweb/views.py +++ b/panikweb/views.py @@ -20,7 +20,7 @@ from django.core.paginator import Paginator from django.contrib.sites.models import Site from django.contrib.syndication.views import Feed, add_domain -from django.utils.feedgenerator import Atom1Feed +from django.utils.feedgenerator import Atom1Feed, Rss201rev2Feed from haystack.query import SearchQuerySet from jsonresponse import to_json @@ -653,11 +653,22 @@ class NewsItemDetailView(DetailView): newsitem = NewsItemDetailView.as_view() +class RssCustomPodcastsFeed(Rss201rev2Feed): + def root_attributes(self): + attrs = super(RssCustomPodcastsFeed, self).root_attributes() + attrs['xmlns:dc'] = 'http://purl.org/dc/elements/1.1/' + return attrs + + def add_item_elements(self, handler, item): + super(RssCustomPodcastsFeed, self).add_item_elements(handler, item) + for tag in item.get('tags') or []: + handler.addQuickElement('dc:subject', tag) class PodcastsFeed(Feed): title = 'Radio Panik - Podcasts' link = '/' description_template = 'feed/soundfile.html' + feed_type = RssCustomPodcastsFeed def items(self): return SoundFile.objects.select_related().filter( @@ -688,6 +699,9 @@ class PodcastsFeed(Feed): def item_pubdate(self, item): return item.creation_timestamp + def item_extra_kwargs(self, item): + return {'tags': [x.name for x in item.episode.tags.all()]} + podcasts_feed = PodcastsFeed() -- 2.39.2