def episode(request, episode): site = RequestSite(request) podcast = episode.podcast if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() if request.method == "POST": form = None # EpisodeForm(request.POST, instance=e) # if form.is_valid(): # form.save() elif request.method == "GET": form = None # EpisodeForm(instance=e) timeline_data = list(episode_listener_data(episode)) return render( request, "publisher/episode.html", { "is_secure": request.is_secure(), "domain": site.domain, "episode": episode, "podcast": podcast, "form": form, "timeline_data": timeline_data, }, )
def episode(request, episode): site = RequestSite(request) podcast = podcast_by_id(episode.podcast) if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() if request.method == 'POST': form = None # EpisodeForm(request.POST, instance=e) # if form.is_valid(): # form.save() elif request.method == 'GET': form = None # EpisodeForm(instance=e) timeline_data = list(episode_listener_data(episode)) heatmap = EpisodeHeatmap(episode.podcast, episode._id, duration=episode.duration) return render(request, 'publisher/episode.html', { 'is_secure': request.is_secure(), 'domain': site.domain, 'episode': episode, 'podcast': podcast, 'form': form, 'timeline_data': timeline_data, 'heatmap': heatmap, })
def all_episodes(request, podcast, page_size=20): # Make sure page request is an int. If not, deliver first page. try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 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 page_list = get_page_list(1, num_pages, page, 15) listeners = [e.listeners for e in episodes if e.listeners is not None] max_listeners = max(listeners, default=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, }, )
def podcast(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() timeline_data = listener_data([podcast]) subscription_data = subscriber_data([podcast])[-20:] update_token = request.user.profile.get_token('publisher_update_token') try: pubsubscription = HubSubscription.objects.get(topic_url=podcast.url) except HubSubscription.DoesNotExist: pubsubscription = None site = RequestSite(request) feedurl_quoted = urllib.parse.quote(podcast.url) return render( request, 'publisher/podcast.html', { 'site': site, 'podcast': podcast, 'group': podcast.group, 'form': None, 'timeline_data': timeline_data, 'subscriber_data': subscription_data, 'update_token': update_token, 'feedurl_quoted': feedurl_quoted, 'pubsubscription': pubsubscription, })
def podcast(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() timeline_data = listener_data([podcast]) subscription_data = subscriber_data([podcast])[-20:] if podcast.group: group = podcastgroup_by_id(podcast.group) else: group = None update_token = request.user.publisher_update_token heatmap = EpisodeHeatmap(podcast.get_id()) pubsubscription = subscription_for_topic(podcast.url) site = RequestSite(request) feedurl_quoted = urllib.quote(podcast.url) return render(request, 'publisher/podcast.html', { 'site': site, 'podcast': podcast, 'group': group, 'form': None, 'timeline_data': timeline_data, 'subscriber_data': subscription_data, 'update_token': update_token, 'heatmap': heatmap, 'feedurl_quoted': feedurl_quoted, 'pubsubscription': pubsubscription, })
def all_episodes(request, podcast, page_size=20): # Make sure page request is an int. If not, deliver first page. try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 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 page_list = get_page_list(1, num_pages, page, 15) listeners = [e.listeners for e in episodes if e.listeners is not None] max_listeners = max(listeners, default=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, })
def episode(request, episode): site = RequestSite(request) podcast = episode.podcast if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() if request.method == 'POST': form = None # EpisodeForm(request.POST, instance=e) # if form.is_valid(): # form.save() elif request.method == 'GET': form = None # EpisodeForm(instance=e) timeline_data = list(episode_listener_data(episode)) return render( request, 'publisher/episode.html', { 'is_secure': request.is_secure(), 'domain': site.domain, 'episode': episode, 'podcast': podcast, 'form': form, 'timeline_data': timeline_data, }, )
def podcast(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() timeline_data = listener_data([podcast]) subscription_data = subscriber_data([podcast])[-20:] update_token = request.user.profile.get_token('publisher_update_token') heatmap = EpisodeHeatmap(podcast) try: pubsubscription = HubSubscription.objects.get(topic_url=podcast.url) except HubSubscription.DoesNotExist: pubsubscription = None site = RequestSite(request) feedurl_quoted = urllib.quote(podcast.url) return render(request, 'publisher/podcast.html', { 'site': site, 'podcast': podcast, 'group': podcast.group, 'form': None, 'timeline_data': timeline_data, 'subscriber_data': subscription_data, 'update_token': update_token, 'heatmap': heatmap, 'feedurl_quoted': feedurl_quoted, 'pubsubscription': pubsubscription, })
def update_podcast(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() update_podcasts( [podcast] ) url = get_podcast_link_target(podcast, 'podcast-publisher-detail') return HttpResponseRedirect(url)
def episode(request, episode): podcast = episode.podcast podcast = check_restrictions(podcast) user = request.user if not podcast: raise Http404 if user.is_authenticated(): is_fav = FavoriteEpisode.objects.filter(user=user, episode=episode)\ .exists() # pre-populate data for fetch_data podcasts_dict = {podcast.get_id(): podcast} episodes_dict = {episode.id.hex: episode} has_history = EpisodeHistoryEntry.objects.filter(user=user, episode=episode)\ .exists() played_parts = EpisodeHeatmap(podcast, episode, user, episode.duration) devices = {c.id.hex: c for c in user.client_set.all()} can_flattr = user.profile.settings.get_wksetting( FLATTR_TOKEN) and episode.flattr_url else: has_history = False is_fav = False played_parts = None devices = {} can_flattr = False is_publisher = check_publisher_permission(user, podcast) prev = None #podcast.get_episode_before(episode) next = None #podcast.get_episode_after(episode) return render( request, 'episode.html', { 'episode': episode, 'podcast': podcast, 'prev': prev, 'next': next, 'has_history': has_history, 'is_favorite': is_fav, 'played_parts': played_parts, 'actions': EPISODE_ACTION_TYPES, 'devices': devices, 'can_flattr': can_flattr, 'is_publisher': is_publisher, })
def update_podcast(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() update_podcasts.delay([podcast.url]) messages.success(request, _('The update has been scheduled. It might take some time until the results are visible.')) url = get_podcast_link_target(podcast, 'podcast-publisher-detail') return HttpResponseRedirect(url)
def episode(request, episode): podcast = episode.podcast podcast = check_restrictions(podcast) user = request.user if not podcast: raise Http404 if user.is_authenticated(): is_fav = FavoriteEpisode.objects.filter(user=user, episode=episode)\ .exists() # pre-populate data for fetch_data podcasts_dict = {podcast.get_id(): podcast} episodes_dict = {episode.id.hex: episode} has_history = EpisodeHistoryEntry.objects.filter(user=user, episode=episode)\ .exists() played_parts = EpisodeHeatmap(podcast, episode, user, episode.duration) devices = {c.id.hex: c for c in user.client_set.all()} can_flattr = user.profile.settings.get_wksetting(FLATTR_TOKEN) and episode.flattr_url else: has_history = False is_fav = False played_parts = None devices = {} can_flattr = False is_publisher = check_publisher_permission(user, podcast) prev = None #podcast.get_episode_before(episode) next = None #podcast.get_episode_after(episode) return render(request, 'episode.html', { 'episode': episode, 'podcast': podcast, 'prev': prev, 'next': next, 'has_history': has_history, 'is_favorite': is_fav, 'played_parts': played_parts, 'actions': EPISODE_ACTION_TYPES, 'devices': devices, 'can_flattr': can_flattr, 'is_publisher': is_publisher, })
def episode(request, episode): podcast = podcast_by_id(episode.podcast) podcast = check_restrictions(podcast) user = request.user if not podcast: raise Http404 if user.is_authenticated(): episode_state = episode_state_for_user_episode(user, episode) is_fav = episode_state.is_favorite() # pre-populate data for fetch_data podcasts_dict = {podcast.get_id(): podcast} episodes_dict = {episode._id: episode} has_history = bool(list(episode_state.get_history_entries())) played_parts = EpisodeHeatmap(podcast.get_id(), episode._id, user._id, duration=episode.duration) devices = dict( (d.id, d.name) for d in user.devices ) can_flattr = user.get_wksetting(FLATTR_TOKEN) and episode.flattr_url else: has_history = False is_fav = False played_parts = None devices = {} can_flattr = False is_publisher = check_publisher_permission(user, podcast) prev = podcast.get_episode_before(episode) next = podcast.get_episode_after(episode) return render(request, 'episode.html', { 'episode': episode, 'podcast': podcast, 'prev': prev, 'next': next, 'has_history': has_history, 'is_favorite': is_fav, 'played_parts': played_parts, 'actions': EPISODE_ACTION_TYPES, 'devices': devices, 'can_flattr': can_flattr, 'is_publisher': is_publisher, })
def episode(request, episode): podcast = episode.podcast podcast = check_restrictions(podcast) user = request.user if not podcast: raise Http404 if user.is_authenticated: is_fav = FavoriteEpisode.objects.filter(user=user, episode=episode).exists() # pre-populate data for fetch_data podcasts_dict = {podcast.get_id(): podcast} episodes_dict = {episode.id.hex: episode} has_history = EpisodeHistoryEntry.objects.filter( user=user, episode=episode).exists() devices = {c.id.hex: c for c in user.client_set.all()} else: has_history = False is_fav = False devices = {} is_publisher = check_publisher_permission(user, podcast) prev = None # podcast.get_episode_before(episode) next = None # podcast.get_episode_after(episode) return render( request, 'episode.html', { 'episode': episode, 'podcast': podcast, 'prev': prev, 'next': next, 'has_history': has_history, 'is_favorite': is_fav, 'actions': EPISODE_ACTION_TYPES, 'devices': devices, 'is_publisher': is_publisher, }, )
def episode(request, episode): podcast = episode.podcast podcast = check_restrictions(podcast) user = request.user if not podcast: raise Http404 if user.is_authenticated: is_fav = FavoriteEpisode.objects.filter(user=user, episode=episode).exists() # pre-populate data for fetch_data podcasts_dict = {podcast.get_id(): podcast} episodes_dict = {episode.id.hex: episode} has_history = EpisodeHistoryEntry.objects.filter( user=user, episode=episode ).exists() devices = {c.id.hex: c for c in user.client_set.all()} else: has_history = False is_fav = False devices = {} is_publisher = check_publisher_permission(user, podcast) prev = None # podcast.get_episode_before(episode) next = None # podcast.get_episode_after(episode) return render( request, 'episode.html', { 'episode': episode, 'podcast': podcast, 'prev': prev, 'next': next, 'has_history': has_history, 'is_favorite': is_fav, 'actions': EPISODE_ACTION_TYPES, 'devices': devices, 'is_publisher': is_publisher, }, )
def episodes(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() episodes = Episode.objects.filter(podcast=podcast).select_related('podcast').prefetch_related('slugs', 'podcast__slugs') max_listeners = max([e.listeners for e in episodes] + [0]) return render(request, 'publisher/episodes.html', { 'podcast': podcast, 'episodes': episodes, 'max_listeners': max_listeners })
def episodes(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() episodes = Episode.objects.filter(podcast=podcast).select_related('podcast').prefetch_related('slugs', 'podcast__slugs') listeners = map(None, (e.listeners for e in episodes)) max_listeners = max(listeners, default=0) return render(request, 'publisher/episodes.html', { 'podcast': podcast, 'episodes': episodes, 'max_listeners': max_listeners })
def group(request, group): podcasts = group.podcasts # users need to have publisher access for at least one of the group's podcasts if not any([check_publisher_permission(request.user, p) for p in podcasts]): return HttpResponseForbidden() timeline_data = listener_data(podcasts) subscription_data = list(subscriber_data(podcasts))[-20:] return render(request, 'publisher/group.html', { 'group': group, 'timeline_data': timeline_data, 'subscriber_data': subscription_data, })
def episodes(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() episodes = ( Episode.objects.filter(podcast=podcast) .select_related("podcast") .prefetch_related("slugs", "podcast__slugs") ) listeners = filter(None, (e.listeners for e in episodes)) max_listeners = max(listeners, default=0) return render( request, "publisher/episodes.html", {"podcast": podcast, "episodes": episodes, "max_listeners": max_listeners}, )
def podcast(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() timeline_data = listener_data([podcast]) subscription_data = subscriber_data([podcast])[-20:] if podcast.group: group = PodcastGroup.get(podcast.group) else: group = None # if request.method == 'POST': # form = NonePodcastForm(request.POST, instance=p) # if form.is_valid(): # form.save() # elif request.method == 'GET': # form = PodcastForm(instance=p) if 'new_token' in request.GET: request.user.create_new_token('publisher_update_token') request.user.save() update_token = request.user.publisher_update_token heatmap = EpisodeHeatmap(podcast.get_id()) site = RequestSite(request) return render(request, 'publisher/podcast.html', { 'site': site, 'podcast': podcast, 'group': group, 'form': None, 'timeline_data': timeline_data, 'subscriber_data': subscription_data, 'update_token': update_token, 'heatmap': heatmap, })
def episodes(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() episodes = episodes_for_podcast(podcast, descending=True) listeners = dict(episode_listener_counts(podcast)) max_listeners = max(listeners.values() + [0]) def annotate_episode(episode): listener_count = listeners.get(episode._id, None) return proxy_object(episode, listeners=listener_count) episodes = map(annotate_episode, episodes) return render(request, 'publisher/episodes.html', { 'podcast': podcast, 'episodes': episodes, 'max_listeners': max_listeners })
def podcast(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() timeline_data = listener_data([podcast]) subscription_data = subscriber_data([podcast])[-20:] update_token = request.user.profile.get_token('publisher_update_token') try: pubsubscription = HubSubscription.objects.get(topic_url=podcast.url) except HubSubscription.DoesNotExist: pubsubscription = None MAX_UPDATE_RESULTS = 10 update_results = PodcastUpdateResult.objects.filter(podcast=podcast) update_results = update_results[:MAX_UPDATE_RESULTS] site = RequestSite(request) feedurl_quoted = urllib.parse.quote(podcast.url.encode('ascii')) return render( request, 'publisher/podcast.html', { 'site': site, 'podcast': podcast, 'group': podcast.group, 'form': None, 'timeline_data': timeline_data, 'subscriber_data': subscription_data, 'update_token': update_token, 'feedurl_quoted': feedurl_quoted, 'pubsubscription': pubsubscription, 'update_results': update_results, }, )
def podcast(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() timeline_data = None # listener_data([podcast]) subscription_data = None # subscriber_data([podcast])[-20:] update_token = request.user.profile.get_token("publisher_update_token") try: pubsubscription = HubSubscription.objects.get(topic_url=podcast.url) except HubSubscription.DoesNotExist: pubsubscription = None MAX_UPDATE_RESULTS = 10 update_results = PodcastUpdateResult.objects.filter(podcast=podcast) update_results = update_results[:MAX_UPDATE_RESULTS] site = RequestSite(request) feedurl_quoted = urllib.parse.quote(podcast.url.encode("ascii")) return render( request, "publisher/podcast.html", { "site": site, "podcast": podcast, "group": podcast.group, "form": None, "timeline_data": timeline_data, "subscriber_data": subscription_data, "update_token": update_token, "feedurl_quoted": feedurl_quoted, "pubsubscription": pubsubscription, "update_results": update_results, }, )
def podcast(request, podcast): if not check_publisher_permission(request.user, podcast): return HttpResponseForbidden() timeline_data = None # listener_data([podcast]) subscription_data = None # subscriber_data([podcast])[-20:] update_token = request.user.profile.get_token('publisher_update_token') try: pubsubscription = HubSubscription.objects.get(topic_url=podcast.url) except HubSubscription.DoesNotExist: pubsubscription = None MAX_UPDATE_RESULTS = 10 update_results = PodcastUpdateResult.objects.filter(podcast=podcast) update_results = update_results[:MAX_UPDATE_RESULTS] site = RequestSite(request) feedurl_quoted = urllib.parse.quote(podcast.url.encode('ascii')) return render( request, 'publisher/podcast.html', { 'site': site, 'podcast': podcast, 'group': podcast.group, 'form': None, 'timeline_data': timeline_data, 'subscriber_data': subscription_data, 'update_token': update_token, 'feedurl_quoted': feedurl_quoted, 'pubsubscription': pubsubscription, 'update_results': update_results, }, )
def show(request, podcast): """ Shows a podcast detail page """ podcast = check_restrictions(podcast) current_site = RequestSite(request) num_episodes = 20 episodes = episode_list(podcast, request.user, limit=num_episodes) user = request.user # TODO: move into EpisodeList (?) class listeners = [e.listeners for e in episodes if e.listeners is not None] max_listeners = max(listeners, default=0) episode = None if episodes: episode = episodes[0] episodes = episodes[1:] if podcast.group: group = podcast.group rel_podcasts = group.podcast_set.all() else: rel_podcasts = [] tags = get_tags(podcast, user) has_tagged = any(t['is_own'] for t in tags) if user.is_authenticated: subscribed_devices = Client.objects.filter( subscription__user=user, subscription__podcast=podcast) subscribe_targets = get_subscribe_targets(podcast, user) has_history = HistoryEntry.objects.filter(user=user, podcast=podcast).exists() else: has_history = False subscribed_devices = [] subscribe_targets = [] is_publisher = check_publisher_permission(user, podcast) episodes_total = podcast.episode_count or 0 num_pages = episodes_total / num_episodes page_list = get_page_list(1, num_pages, 1, 15) return render( request, 'podcast.html', { 'tags': tags, 'has_tagged': has_tagged, 'url': current_site, 'has_history': has_history, 'podcast': podcast, 'devices': subscribed_devices, 'related_podcasts': rel_podcasts, 'can_subscribe': len(subscribe_targets) > 0, 'subscribe_targets': subscribe_targets, 'episode': episode, 'episodes': episodes, 'max_listeners': max_listeners, 'is_publisher': is_publisher, 'page_list': page_list, 'current_page': 1, }, )
def show(request, podcast): """ Shows a podcast detail page """ podcast = check_restrictions(podcast) current_site = RequestSite(request) num_episodes = 20 episodes = episode_list(podcast, request.user, limit=num_episodes) user = request.user max_listeners = max([e.listeners for e in episodes] + [0]) episode = None if episodes: episode = episodes[0] episodes = episodes[1:] if podcast.group: group = PodcastGroup.get(podcast.group) rel_podcasts = filter(lambda x: x != podcast, group.podcasts) else: rel_podcasts = [] tags, has_tagged = get_tags(podcast, user) if user.is_authenticated(): state = podcast_state_for_user_podcast(user, podcast) subscribed_devices = state.get_subscribed_device_ids() subscribed_devices = user.get_devices(subscribed_devices) subscribe_targets = podcast.subscribe_targets(user) has_history = bool(state.actions) is_public = state.settings.get('public_subscription', True) can_flattr = request.user.get_wksetting(FLATTR_TOKEN) and podcast.flattr_url else: has_history = False is_public = False subscribed_devices = [] subscribe_targets = [] can_flattr = False is_publisher = check_publisher_permission(user, podcast) episodes_total = podcast.episode_count or 0 num_pages = episodes_total / num_episodes page_list = get_page_list(1, num_pages, 1, 15) return render(request, 'podcast.html', { 'tags': tags, 'has_tagged': has_tagged, 'url': current_site, 'has_history': has_history, 'podcast': podcast, 'is_public': is_public, 'devices': subscribed_devices, 'related_podcasts': rel_podcasts, 'can_subscribe': len(subscribe_targets) > 0, 'subscribe_targets': subscribe_targets, 'episode': episode, 'episodes': episodes, 'max_listeners': max_listeners, 'can_flattr': can_flattr, 'is_publisher': is_publisher, 'page_list': page_list, 'current_page': 1, })
def show(request, podcast): """ Shows a podcast detail page """ podcast = check_restrictions(podcast) current_site = RequestSite(request) num_episodes = 20 episodes = episode_list(podcast, request.user, limit=num_episodes) user = request.user # TODO: move into EpisodeList (?) class listeners = [e.listeners for e in episodes if e.listeners is not None] max_listeners = max(listeners, default=0) episode = None if episodes: episode = episodes[0] episodes = episodes[1:] if podcast.group: group = podcast.group rel_podcasts = group.podcast_set.exclude(pk=podcast.pk) else: rel_podcasts = [] tags = get_tags(podcast, user) has_tagged = any(t['is_own'] for t in tags) if user.is_authenticated(): subscribed_devices = Client.objects.filter( subscription__user=user, subscription__podcast=podcast, ) subscribe_targets = get_subscribe_targets(podcast, user) has_history = HistoryEntry.objects.filter(user=user, podcast=podcast)\ .exists() can_flattr = (user.profile.settings.get_wksetting(FLATTR_TOKEN) and podcast.flattr_url) else: has_history = False subscribed_devices = [] subscribe_targets = [] can_flattr = False is_publisher = check_publisher_permission(user, podcast) episodes_total = podcast.episode_count or 0 num_pages = episodes_total / num_episodes page_list = get_page_list(1, num_pages, 1, 15) return render(request, 'podcast.html', { 'tags': tags, 'has_tagged': has_tagged, 'url': current_site, 'has_history': has_history, 'podcast': podcast, 'devices': subscribed_devices, 'related_podcasts': rel_podcasts, 'can_subscribe': len(subscribe_targets) > 0, 'subscribe_targets': subscribe_targets, 'episode': episode, 'episodes': episodes, 'max_listeners': max_listeners, 'can_flattr': can_flattr, 'is_publisher': is_publisher, 'page_list': page_list, 'current_page': 1, })