def episode_toplist(request, num=100): lang = process_lang_params(request) toplist = EpisodeToplist(language=lang) entries = list(map(proxy_object, toplist[:num])) # load podcast objects podcast_ids = [e.podcast for e in entries] podcasts = podcasts_to_dict(podcast_ids, True) for entry in entries: entry.podcast = podcasts.get(entry.podcast, None) current_site = RequestSite(request) # Determine maximum listener amount (or 0 if no entries exist) max_listeners = max([0]+[e.listeners for e in entries]) languages = get_podcast_languages() all_langs = get_language_names(languages) return render(request, 'episode_toplist.html', { 'entries': entries, 'max_listeners': max_listeners, 'url': current_site, 'language': lang, 'all_languages': all_langs, })
def all_languages(self): """ Returns all 2-letter language codes that are used by podcasts. It filters obviously invalid strings, but does not check if any of these codes is contained in ISO 639. """ query = Podcast.objects.exclude(language__isnull=True) query = query.distinct('language').values('language') langs = [o['language'] for o in query] langs = sorted(sanitize_language_codes(langs)) return get_language_names(langs)
def toplist(request, num=100, lang=None): lang = process_lang_params(request) toplist = PodcastToplist(lang) entries = toplist[:num] max_subscribers = max([p.subscriber_count() for (oldp, p) in entries]) if entries else 0 current_site = RequestSite(request) languages = get_podcast_languages() all_langs = get_language_names(languages) return render(request, 'toplist.html', { 'entries': entries, 'max_subscribers': max_subscribers, 'url': current_site, 'language': lang, 'all_languages': all_langs, })
lang = utils.process_lang_params(request) except utils.UpdatedException, updated: return HttpResponseRedirect("/toplist/?lang=%s" % ",".join(updated.data)) type_str = request.GET.get("types", "") set_types = [t for t in type_str.split(",") if t] media_types = set_types or CONTENT_TYPES toplist = PodcastToplist(lang, media_types) entries = toplist[:num] max_subscribers = max([p.subscriber_count() for (oldp, p) in entries]) if entries else 0 current_site = RequestSite(request) languages = get_cache_or_calc("podcast-languages", timeout=60 * 60, calc=lambda: utils.get_podcast_languages()) all_langs = utils.get_language_names(languages) return render( request, "toplist.html", { "entries": entries, "max_subscribers": max_subscribers, "url": current_site, "languages": lang, "all_languages": all_langs, "types": media_types, }, )