Automatically generate feed enclosure URL prefix
This commit is contained in:
parent
6393441126
commit
9381e607cd
2 changed files with 17 additions and 5 deletions
|
@ -17,7 +17,8 @@
|
|||
# "AGPLv3". If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
from django.contrib.syndication.views import Feed
|
||||
from django.contrib.sites.shortcuts import get_current_site
|
||||
from django.contrib.syndication.views import add_domain, Feed
|
||||
from django.utils.feedgenerator import Rss201rev2Feed
|
||||
#from podjango.apps.staff.models import Person
|
||||
from podjango.apps.cast.models import Cast
|
||||
|
@ -181,8 +182,19 @@ class CastFeed(CastFeedBase):
|
|||
author_name = "Free as in Freedom"
|
||||
title_template = "feeds/podcast_title.html"
|
||||
description_template = "feeds/podcast_description.html"
|
||||
|
||||
def get_feed(self, obj, request):
|
||||
# Enclosure (media) URLs don't automatically get the protocol and
|
||||
# domain, but these are required for the podcast to work
|
||||
# properly. added. This provides current_site and is_secure to the feed
|
||||
# so that we have it in context for use in `item_enclosure_url`.
|
||||
self.current_site = get_current_site(request)
|
||||
self.is_secure = request.is_secure()
|
||||
return super().get_feed(obj, request)
|
||||
|
||||
def items(self):
|
||||
return Cast.objects.filter(pub_date__lte=datetime.now()).order_by('-pub_date')
|
||||
|
||||
def item_pubdate(self, item):
|
||||
return item.pub_date
|
||||
|
||||
|
@ -221,14 +233,14 @@ class CastFeed(CastFeedBase):
|
|||
class Mp3CastFeed(CastFeed):
|
||||
def item_enclosure_mime_type(self): return "audio/mpeg"
|
||||
def item_enclosure_url(self, item):
|
||||
return item.mp3_path
|
||||
return add_domain(self.current_site.domain, item.mp3_path, self.is_secure)
|
||||
def item_enclosure_length(self, item):
|
||||
return item.mp3_length
|
||||
|
||||
class OggCastFeed(CastFeed):
|
||||
def item_enclosure_mime_type(self): return "audio/ogg"
|
||||
def item_enclosure_url(self, item):
|
||||
return item.ogg_path
|
||||
return add_domain(self.current_site.domain, item.ogg_path, self.is_secure)
|
||||
def item_enclosure_length(self, item):
|
||||
return item.ogg_length
|
||||
|
||||
|
|
|
@ -33,8 +33,8 @@ app_name = 'podjango'
|
|||
urlpatterns = [
|
||||
url(r'^$', frontpage.view),
|
||||
url(r'^cast/', include('podjango.apps.cast.urls')),
|
||||
url(r'^feeds/cast-ogg/$', Mp3CastFeed(), name='feed-ogg'),
|
||||
url(r'^feeds/cast-mp3/$', OggCastFeed(), name='feed-mp3'),
|
||||
url(r'^feeds/cast-ogg/$', OggCastFeed(), name='feed-ogg'),
|
||||
url(r'^feeds/cast-mp3/$', Mp3CastFeed(), name='feed-mp3'),
|
||||
url(r'^feeds/$', view, name='feeds'),
|
||||
]
|
||||
|
||||
|
|
Loading…
Reference in a new issue