From d2f8226321e8aa7f4ca04540ef78f74ff4ff0084 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Sun, 16 Jun 2013 16:38:08 +0200 Subject: [PATCH] let podcasts, episodes link to their publisher pages --- mygpo/publisher/utils.py | 5 +++++ mygpo/web/templates/episode.html | 9 +++++++++ mygpo/web/templates/episodes.html | 13 +++++++++++++ mygpo/web/templates/podcast.html | 10 +++++++++- mygpo/web/views/episode.py | 22 +++++++++++++--------- mygpo/web/views/podcast.py | 11 ++++++++++- 6 files changed, 59 insertions(+), 11 deletions(-) diff --git a/mygpo/publisher/utils.py b/mygpo/publisher/utils.py index 3e354764..374d8544 100644 --- a/mygpo/publisher/utils.py +++ b/mygpo/publisher/utils.py @@ -132,6 +132,11 @@ def subscriber_data(podcasts): def check_publisher_permission(user, podcast): + """ Checks if the user has publisher permissions for the given podcast """ + + if not user.is_authenticated(): + return False + if user.is_staff: return True diff --git a/mygpo/web/templates/episode.html b/mygpo/web/templates/episode.html index d9c03f62..f8cc0e2a 100644 --- a/mygpo/web/templates/episode.html +++ b/mygpo/web/templates/episode.html @@ -137,6 +137,15 @@ {% block sidebar %} + {% if is_publisher %} +
+

{% trans "Publisher Pages" %}

+ + {% trans "Go" %} +
+ {% endif %} + +

Share

diff --git a/mygpo/web/templates/episodes.html b/mygpo/web/templates/episodes.html index e3af91b2..c8045988 100755 --- a/mygpo/web/templates/episodes.html +++ b/mygpo/web/templates/episodes.html @@ -129,6 +129,19 @@ {% endblock %} +{% block sidebar %} + + {% if is_publisher %} +
+

{% trans "Publisher Pages" %}

+ + {% trans "Go" %} +
+ {% endif %} + + +{% endblock %} + {% block ads %} {% comment %}disable ads on podcast pages{% endcomment %} {% endblock %} diff --git a/mygpo/web/templates/podcast.html b/mygpo/web/templates/podcast.html index aee5a505..7a15507e 100755 --- a/mygpo/web/templates/podcast.html +++ b/mygpo/web/templates/podcast.html @@ -111,7 +111,7 @@ {{ episode.action|episode_status_icon }}
{% episode_link episode podcast %}
-
{{ episode.description|default:""|truncatewords:"20"|markdown|striptags }}
+
{{ episode.subtitle|default:episode.description|default:""|truncatewords:"20"|markdown|striptags }}
{{ episode.released|default:""|date:"Y-m-d" }} @@ -141,6 +141,14 @@ {% block sidebar %} + {% if is_publisher %} +
+

{% trans "Publisher Pages" %}

+ + {% trans "Go" %} +
+ {% endif %} +

{% trans "Subscriptions" %}

{% if not user.is_authenticated %} diff --git a/mygpo/web/views/episode.py b/mygpo/web/views/episode.py index 254cc0d6..27a1bc6e 100644 --- a/mygpo/web/views/episode.py +++ b/mygpo/web/views/episode.py @@ -37,6 +37,7 @@ from mygpo.users.models import Chapter, HistoryEntry, EpisodeAction from mygpo.utils import parse_time, get_timestamp from mygpo.users.settings import FLATTR_TOKEN from mygpo.web.heatmap import EpisodeHeatmap +from mygpo.publisher.utils import check_publisher_permission from mygpo.web.utils import get_episode_link_target, fetch_episode_data from mygpo.db.couchdb.episode import episode_for_slug_id, episode_for_oldid, \ favorite_episodes_for_user, chapters_for_episode @@ -53,13 +54,14 @@ from mygpo.userfeeds.feeds import FavoriteFeed def episode(request, episode): podcast = podcast_by_id(episode.podcast) + user = request.user if not podcast: raise Http404 - if request.user.is_authenticated(): + if user.is_authenticated(): - episode_state = episode_state_for_user_episode(request.user, episode) + episode_state = episode_state_for_user_episode(user, episode) is_fav = episode_state.is_favorite() @@ -68,14 +70,14 @@ def episode(request, episode): episodes_dict = {episode._id: episode} history = list(episode_state.get_history_entries()) - HistoryEntry.fetch_data(request.user, history, + HistoryEntry.fetch_data(user, history, podcasts=podcasts_dict, episodes=episodes_dict) played_parts = EpisodeHeatmap(podcast.get_id(), - episode._id, request.user._id, duration=episode.duration) + episode._id, user._id, duration=episode.duration) - devices = dict( (d.id, d.name) for d in request.user.devices ) - can_flattr = request.user.get_wksetting(FLATTR_TOKEN) and episode.flattr_url + devices = dict( (d.id, d.name) for d in user.devices ) + can_flattr = user.get_wksetting(FLATTR_TOKEN) and episode.flattr_url else: history = [] @@ -84,11 +86,12 @@ def episode(request, episode): devices = {} can_flattr = False + is_publisher = check_publisher_permission(user, podcast) chapters = [] - for user, chapter in chapters_for_episode(episode._id): - chapter.is_own = request.user.is_authenticated() and \ - user == request.user._id + for user_id, chapter in chapters_for_episode(episode._id): + chapter.is_own = user.is_authenticated() and \ + user_id == user._id chapters.append(chapter) @@ -107,6 +110,7 @@ def episode(request, episode): 'actions': EPISODE_ACTION_TYPES, 'devices': devices, 'can_flattr': can_flattr, + 'is_publisher': is_publisher, }) diff --git a/mygpo/web/views/podcast.py b/mygpo/web/views/podcast.py index 037f98c1..6f34e0e8 100644 --- a/mygpo/web/views/podcast.py +++ b/mygpo/web/views/podcast.py @@ -15,6 +15,7 @@ from mygpo.core.proxy import proxy_object from mygpo.core.tasks import flattr_thing from mygpo.utils import normalize_feed_url from mygpo.users.settings import PUBLIC_SUB_PODCAST, FLATTR_TOKEN +from mygpo.publisher.utils import check_publisher_permission from mygpo.users.models import HistoryEntry, DeviceDoesNotExist, SubscriptionAction from mygpo.web.forms import SyncForm from mygpo.decorators import allowed_methods, repeat_on_conflict @@ -98,6 +99,8 @@ def show(request, podcast): subscribe_targets = [] can_flattr = False + is_publisher = check_publisher_permission(user, podcast) + def _set_objects(h): dev = user.get_device(h.device) return proxy_object(h, device=dev) @@ -117,6 +120,7 @@ def show(request, podcast): 'episodes': episodes, 'max_listeners': max_listeners, 'can_flattr': can_flattr, + 'is_publisher': is_publisher, }) @@ -181,7 +185,9 @@ def all_episodes(request, podcast, page_size=20): except ValueError: page = 1 - episodes = episode_list(podcast, request.user, (page-1) * page_size, + user = request.user + + episodes = episode_list(podcast, user, (page-1) * page_size, page_size) episodes_total = podcast.episode_count or 0 num_pages = episodes_total / page_size @@ -189,12 +195,15 @@ def all_episodes(request, podcast, page_size=20): max_listeners = max([e.listeners for e in episodes] + [0]) + is_publisher = check_publisher_permission(user, podcast) + return render(request, 'episodes.html', { 'podcast': podcast, 'episodes': episodes, 'max_listeners': max_listeners, 'page_list': page_list, 'current_page': page, + 'is_publisher': is_publisher, }) -- 2.11.4.GIT