def _wrap_podcast_group(res): if res['doc']['doc_type'] == 'Podcast': return Podcast.wrap(res['doc']) else: pg = PodcastGroup.wrap(res['doc']) id = res['key'] return pg.get_podcast_by_id(id)
def _decorator(request, slug_id, *args, **kwargs): group = PodcastGroup.for_slug_id(slug_id) if podcast is None: raise Http404 return f(request, group, *args, **kwargs)
def search_wrapper(result): doc = result['doc'] if doc['doc_type'] == 'Podcast': p = Podcast.wrap(doc) elif doc['doc_type'] == 'PodcastGroup': p = PodcastGroup.wrap(doc) p._id = result['id'] return p
def show(request, podcast): episodes = episode_list(podcast, request.user) max_listeners = max([e.listeners for e in episodes] + [0]) if podcast.group: group = PodcastGroup.get(podcast.group) rel_podcasts = filter(lambda x: x != podcast, group.podcasts) else: rel_podcasts = [] tags = get_tags(podcast, request.user) if request.user.is_authenticated(): request.user.sync_all() state = podcast.get_user_state(request.user) subscribed_devices = state.get_subscribed_device_ids() subscribed_devices = [request.user.get_device(x) for x in subscribed_devices] subscribe_targets = podcast.subscribe_targets(request.user) history = list(state.actions) def _set_objects(h): #TODO: optimize by indexing devices by id dev = request.user.get_device(h.device) return proxy_object(h, device=dev) history = map(_set_objects, history) is_public = state.settings.get('public_subscription', True) subscribe_form = SyncForm() subscribe_form.set_targets(subscribe_targets, '') return render(request, 'podcast.html', { 'tags': tags, 'history': history, 'podcast': podcast, 'is_public': is_public, 'devices': subscribed_devices, 'related_podcasts': rel_podcasts, 'can_subscribe': len(subscribe_targets) > 0, 'subscribe_form': subscribe_form, 'episodes': episodes, 'max_listeners': max_listeners, }) else: current_site = RequestSite(request) return render(request, 'podcast.html', { 'podcast': podcast, 'related_podcasts': rel_podcasts, 'tags': tags, 'url': current_site, 'episodes': episodes, 'max_listeners': max_listeners, })
def podcast_url_wrapper(r): url = r['key'] doc = r['doc'] if doc['doc_type'] == 'Podcast': obj = Podcast.wrap(doc) elif doc['doc_type'] == 'PodcastGroup': obj = PodcastGroup.wrap(doc) return obj.get_podcast_by_url(url)
def _wrap_podcast_group_key1(res): obj = res['doc'] if obj['doc_type'] == 'Podcast': return Podcast.wrap(obj) else: pid = res[u'key'][1] pg = PodcastGroup.wrap(obj) podcast = pg.get_podcast_by_id(pid) return podcast
def _podcast_wrapper(r): from mygpo.core.models import Podcast, PodcastGroup doc = r["doc"] if doc["doc_type"] == "Podcast": return Podcast.wrap(doc) else: pid = r["key"][2] pg = PodcastGroup.wrap(doc) return pg.get_podcast_by_id(pid)
def podcastgroup_by_id(group_id): if not group_id: raise QueryParameterMissing('group_id') pg = PodcastGroup.get(group_id) if pg.needs_update: incomplete_obj.send_robust(sender=pg) return pg
def _podcast_wrapper(r): from mygpo.core.models import Podcast, PodcastGroup doc = r['doc'] if doc['doc_type'] == 'Podcast': return Podcast.wrap(doc) else: pid = r['key'][2] pg = PodcastGroup.wrap(doc) return pg.get_podcast_by_id(pid)
def podcastgroup_for_slug_id(slug_id): """ Returns the Podcast for either an CouchDB-ID for a Slug """ if not slug_id: raise QueryParameterMissing('slug_id') if is_couchdb_id(slug_id): return podcastgroup_by_id(slug_id) else: #TODO: implement return PodcastGroup.for_slug(slug_id)
def _decorator(request, pid, *args, **kwargs): try: pid = int(pid) except (TypeError, ValueError): raise Http404 group = PodcastGroup.for_oldid(pid) if not podcast: raise Http404 return f(request, group, *args, **kwargs)
def _wrap_pg(doc): doc = doc['doc'] if not doc: return None if doc['doc_type'] == 'Podcast': return Podcast.wrap(doc) elif doc['doc_type'] == 'PodcastGroup': return PodcastGroup.wrap(doc) else: logger.error('received unknown doc_type "%s"', doc['doc_type'])
def all_podcasts(): from mygpo.db.couchdb.utils import multi_request_view res = multi_request_view(Podcast,'podcasts/by_id', wrap = False, include_docs = True, stale = 'update_after', ) # TODO: this method is only used for maintenance purposes; should we # really send 'incomplete_obj' signals here? for r in res: obj = r['doc'] if obj['doc_type'] == 'Podcast': yield Podcast.wrap(obj) else: pid = r[u'key'] pg = PodcastGroup.wrap(obj) podcast = pg.get_podcast_by_id(pid) yield podcast
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 _group_wrapper(doc): from mygpo.core.models import PodcastGroup return PodcastGroup.wrap(doc)
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, })