From 94c771f5a62812bca0afaa5885dde08957541682 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Wed, 27 Aug 2014 15:39:08 +0000 Subject: [PATCH] [API] handle SubscribedPodcast as Podcast --- mygpo/api/advanced/directory.py | 15 +++++++++++---- mygpo/api/opml.py | 16 +++++++++++++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/mygpo/api/advanced/directory.py b/mygpo/api/advanced/directory.py index 66c84016..94536f97 100644 --- a/mygpo/api/advanced/directory.py +++ b/mygpo/api/advanced/directory.py @@ -27,6 +27,7 @@ from mygpo.utils import parse_range, normalize_feed_url from mygpo.directory.tags import Topics from mygpo.web.utils import get_episode_link_target, get_podcast_link_target from mygpo.web.logo import get_logo_url +from mygpo.subscriptions.models import SubscribedPodcast from mygpo.decorators import cors_origin from mygpo.api.httpresponse import JsonResponse from mygpo.db.couchdb.directory import category_for_tag @@ -102,14 +103,20 @@ def podcast_data(obj, domain, scaled_logo_size=64): if obj is None: raise ValueError('podcast should not be None') - podcast = obj + if isinstance(obj, SubscribedPodcast): + url = obj.ref_url + podcast = obj.podcast + else: + podcast = obj + url = podcast.url + subscribers = podcast.subscribers last_subscribers = podcast.subscribers - scaled_logo_url = get_logo_url(obj, scaled_logo_size) + scaled_logo_url = get_logo_url(podcast, scaled_logo_size) return { - "url": podcast.url, + "url": url, "title": podcast.title, "description": podcast.description, "subscribers": subscribers, @@ -117,7 +124,7 @@ def podcast_data(obj, domain, scaled_logo_size=64): "logo_url": podcast.logo_url, "scaled_logo_url": 'http://%s%s' % (domain, scaled_logo_url), "website": podcast.link, - "mygpo_link": 'http://%s%s' % (domain, get_podcast_link_target(obj)), + "mygpo_link": 'http://%s%s' % (domain, get_podcast_link_target(podcast)), } def episode_data(episode, domain, podcast=None): diff --git a/mygpo/api/opml.py b/mygpo/api/opml.py index 3b607669..1445f224 100644 --- a/mygpo/api/opml.py +++ b/mygpo/api/opml.py @@ -98,10 +98,20 @@ class Exporter(object): opml.appendChild(head) def create_outline(channel): + from mygpo.subscriptions.models import SubscribedPodcast + if isinstance(channel, SubscribedPodcast): + title = channel.podcast.title + description = channel.podcast.description + url = channel.ref_url + else: + title = channel.title + description = channel.description + url = channel.url + outline = doc.createElement('outline') - outline.setAttribute('title', channel.title or '') - outline.setAttribute('text', channel.description or '') - outline.setAttribute('xmlUrl', channel.url) + outline.setAttribute('title', title or '') + outline.setAttribute('text', description or '') + outline.setAttribute('xmlUrl', url) outline.setAttribute('type', 'rss') return outline -- 2.11.4.GIT