def item(request, id): item = get_object_or_404(Item.objects.select_related(), pk=id) if item.date is None: previousSet = Item.objects.filter(channel=item.channel, pk__lt=item.pk).order_by('-pk') nextSet = Item.objects.filter(channel=item.channel, pk__gt=item.pk).order_by('pk') else: previousSet = Item.objects.filter(channel=item.channel, date__lt=item.date).order_by('-date') nextSet = Item.objects.filter(channel=item.channel, date__gt=item.date).order_by('date') try: previous = previousSet[0] except IndexError: previous = None index = nextSet.count() if index: next = nextSet[0] else: next = None default_page = (index // 10) + 1 paginator = Paginator(item.channel.items.all(), 10) try: page = paginator.page(request.GET.get('page', default_page)) except InvalidPage: raise Http404 for i in page.object_list: i.channel = item.channel share_url = urlparse.urljoin( settings.BASE_URL_FULL, '/items/%s' % id) share_links = util.get_share_links(share_url, item.name) context = {'item': item, 'channel': item.channel, 'audio': item.channel.state == item.channel.AUDIO, 'bittorrent': item.mime_type == 'application/x-bittorrent', 'previous': previous, 'next': next, 'page': page, 'share_url': share_url, 'hide_share': request.GET.get('share') != 'true', 'share_type': 'item', 'share_links': share_links, 'feed_url': item.channel.url, 'item_name': item.name, 'file_url': item.url } if share_url: context['google_analytics_ua'] = None return render_to_response('channels/playback.html', context, context_instance=RequestContext(request))
def share_feed(request): try: feed_url = request.GET['feed_url'].encode('utf8') except KeyError: return HttpResponse("you must supply a feed_url") try: channel, items = get_channels_and_items(feed_url) except FeedFetchingError: return HttpResponse("This feed appears to be dead.") if isinstance(channel, Channel): return util.redirect(channel.get_absolute_url(), {'share': 'true'}) share_url = urlparse.urljoin( settings.BASE_URL_FULL, '/share/feed/?feed_url=%s&share=false' % urllib.quote(feed_url)) share_links = None share_button_url = None if request.GET.get('share') == 'false': share_button_url = urlparse.urljoin( settings.BASE_URL_FULL, '/share/feed/?feed_url=%s' % urllib.quote(feed_url)) else: share_links = util.get_share_links(share_url, channel.name) if items: item_paginator = Paginator(items[:10], 10) item_page = item_paginator.page(1) else: item_page = None return render_to_response('channels/show-channel.html', { 'channel': channel, 'item_page': item_page, 'feed_url': feed_url, 'share_url': share_url, 'share_button_url': share_button_url, 'share_type': 'feed', 'google_analytics_ua': None, 'share_links': share_links }, context_instance=RequestContext(request))
def share_feed(request): try: feed_url = request.GET['feed_url'].encode('utf8') except KeyError: return HttpResponse("you must supply a feed_url") try: channel, items = get_channels_and_items(feed_url) except FeedFetchingError: return HttpResponse("This feed appears to be dead.") if isinstance(channel, Channel): return util.redirect(channel.get_absolute_url(), {'share': 'true'}) share_url = urlparse.urljoin( settings.BASE_URL_FULL, '/share/feed/?feed_url=%s&share=false' % urllib.quote(feed_url)) share_links = None share_button_url = None if request.GET.get('share') == 'false': share_button_url = urlparse.urljoin( settings.BASE_URL_FULL, '/share/feed/?feed_url=%s' % urllib.quote(feed_url)) else: share_links = util.get_share_links(share_url, channel.name) if items: item_paginator = Paginator(items[:10], 10) item_page = item_paginator.page(1) else: item_page = None return render_to_response('channels/show-channel.html', {'channel': channel, 'item_page': item_page, 'feed_url': feed_url, 'share_url': share_url, 'share_button_url': share_button_url, 'share_type': 'feed', 'google_analytics_ua': None, 'share_links': share_links }, context_instance=RequestContext(request))
def share_item(request): # check to see if we have that item in our database... # If so # use that item # else # let's create a "fake" item to preview # render that item preview try: file_url = request.GET['file_url'].encode('utf8') except KeyError: return HttpResponse("you must supply a file_url") feed_url = request.GET.get('feed_url') webpage_url = request.GET.get('webpage_url') item_name = request.GET.get('item_name') channel = None item = None next = None previous = None if webpage_url: webpage_url = webpage_url.encode('utf8') if feed_url: feed_url = feed_url.encode('utf8') try: channel, channel_items = get_channels_and_items(feed_url) except FeedFetchingError: channel = None feed_url = None if channel is None: channel_items = [] previous, item, next = get_item(file_url, channel, channel_items, item_name) if isinstance(item, Item): return util.redirect(item.get_absolute_url(), {'share': 'true'}) # get the sharing info get_params = {'file_url': file_url, 'share': 'false'} if feed_url: get_params['feed_url'] = feed_url if webpage_url: get_params['webpage_url'] = webpage_url if item_name: get_params['item_name'] = feed_url share_url = urlparse.urljoin( settings.BASE_URL_FULL, '/share/item/?%s' % urllib.urlencode(get_params)) share_links = None share_button_url = None if request.GET.get('share') == 'false': get_params.pop('share') share_button_url = urlparse.urljoin( settings.BASE_URL_FULL, '/share/item/?%s' % urllib.urlencode(get_params)) else: share_links = util.get_share_links(share_url, item.name) # render the page return render_to_response('channels/playback.html', { 'item': item, 'channel': channel, 'audio': False, 'previous': previous, 'next': next, 'feed_url': feed_url, 'webpage_url': webpage_url, 'item_name': item_name, 'file_url': file_url, 'share_url': share_url, 'share_button_url': share_button_url, 'share_type': 'item', 'google_analytics_ua': None, 'share_links': share_links }, context_instance=RequestContext(request))
def show(request, id, featured_form=None): c = get_object_or_404(Channel, pk=id) try: c.rating except GeneratedRatings.DoesNotExist: c.rating = GeneratedRatings.objects.create(channel=c) # redirect old URLs to canonical ones if request.path != c.get_url(): return util.redirect(c.get_absolute_url(), request.GET) item_paginator = Paginator(c.items.all(), 10) try: item_page = item_paginator.page(request.GET.get('page', 1)) except InvalidPage: raise Http404 for i in item_page.object_list: i.channel = c is_miro = bool(util.get_miro_version(request.META.get('HTTP_USER_AGENT'))) share_links = share_url = None if request.GET.get('share') == 'true': share_url = urlparse.urljoin(settings.BASE_URL_FULL, '/feeds/%s' % id) share_links = util.get_share_links(share_url, c.name) country = country_code(request) context = { 'channel': c, 'item_page': item_page, 'is_miro': is_miro, 'show_edit_button': c.can_edit(request.user), 'show_extra_info': c.can_edit(request.user), 'link_to_channel': True, 'BASE_URL': settings.BASE_URL, 'feed_url': c.url, 'share_url': share_url, 'share_type': 'feed', 'share_links': share_links, 'country': country, 'audio': c.state == c.AUDIO } if share_url: context['google_analytics_ua'] = None if country and c.geoip and country not in c.geoip.split(','): # restricted channel request.add_notification( None, _('This show may not be available to you, ' 'as it is restricted to certain countries.')) if request.user.has_perm('featured.change_featuredqueue'): try: featured_queue = c.featured_queue except FeaturedQueue.DoesNotExist: pass else: if featured_queue.state in (FeaturedQueue.IN_QUEUE, FeaturedQueue.CURRENT): c.featured = True if c.featured_emails.count(): last_featured_email = c.featured_emails.all()[0] else: last_featured_email = None if featured_form is None: featured_form = FeaturedEmailForm(request, c) context['featured_email_form'] = featured_form context['last_featured_email'] = last_featured_email return render_to_response('channels/show-channel.html', context, context_instance=RequestContext(request))
def share_item(request): # check to see if we have that item in our database... # If so # use that item # else # let's create a "fake" item to preview # render that item preview try: file_url = request.GET['file_url'].encode('utf8') except KeyError: return HttpResponse("you must supply a file_url") feed_url = request.GET.get('feed_url') webpage_url = request.GET.get('webpage_url') item_name = request.GET.get('item_name') channel = None item = None next = None previous = None if webpage_url: webpage_url = webpage_url.encode('utf8') if feed_url: feed_url = feed_url.encode('utf8') try: channel, channel_items = get_channels_and_items(feed_url) except FeedFetchingError: channel = None feed_url = None if channel is None: channel_items = [] previous, item, next = get_item(file_url, channel, channel_items, item_name) if isinstance(item, Item): return util.redirect(item.get_absolute_url(), {'share': 'true'}) # get the sharing info get_params = {'file_url': file_url, 'share': 'false'} if feed_url: get_params['feed_url'] = feed_url if webpage_url: get_params['webpage_url'] = webpage_url if item_name: get_params['item_name'] = feed_url share_url = urlparse.urljoin( settings.BASE_URL_FULL, '/share/item/?%s' % urllib.urlencode(get_params)) share_links = None share_button_url = None if request.GET.get('share') == 'false': get_params.pop('share') share_button_url = urlparse.urljoin( settings.BASE_URL_FULL, '/share/item/?%s' % urllib.urlencode(get_params)) else: share_links = util.get_share_links(share_url, item.name) # render the page return render_to_response( 'channels/playback.html', {'item': item, 'channel': channel, 'audio': False, 'previous': previous, 'next': next, 'feed_url': feed_url, 'webpage_url': webpage_url, 'item_name': item_name, 'file_url': file_url, 'share_url': share_url, 'share_button_url': share_button_url, 'share_type': 'item', 'google_analytics_ua': None, 'share_links': share_links}, context_instance=RequestContext(request))
def show(request, id, featured_form=None): c = get_object_or_404(Channel, pk=id) try: c.rating except GeneratedRatings.DoesNotExist: c.rating = GeneratedRatings.objects.create(channel=c) # redirect old URLs to canonical ones if request.path != c.get_url(): return util.redirect(c.get_absolute_url(), request.GET) item_paginator = Paginator(c.items.all(), 10) try: item_page = item_paginator.page(request.GET.get('page', 1)) except InvalidPage: raise Http404 for i in item_page.object_list: i.channel = c is_miro = bool(util.get_miro_version(request.META.get('HTTP_USER_AGENT'))) share_links = share_url = None if request.GET.get('share') == 'true': share_url = urlparse.urljoin( settings.BASE_URL_FULL, '/feeds/%s' % id) share_links = util.get_share_links(share_url, c.name) country = country_code(request) context = { 'channel': c, 'item_page': item_page, 'is_miro': is_miro, 'show_edit_button': c.can_edit(request.user), 'show_extra_info': c.can_edit(request.user), 'link_to_channel': True, 'BASE_URL': settings.BASE_URL, 'feed_url': c.url, 'share_url': share_url, 'share_type': 'feed', 'share_links': share_links, 'country': country, 'audio': c.state == c.AUDIO} if share_url: context['google_analytics_ua'] = None if country and c.geoip and country not in c.geoip.split(','): # restricted channel request.add_notification(None, _('This show may not be available to you, ' 'as it is restricted to certain countries.')) if request.user.has_perm('featured.change_featuredqueue'): try: featured_queue = c.featured_queue except FeaturedQueue.DoesNotExist: pass else: if featured_queue.state in ( FeaturedQueue.IN_QUEUE, FeaturedQueue.CURRENT): c.featured = True if c.featured_emails.count(): last_featured_email = c.featured_emails.all()[0] else: last_featured_email = None if featured_form is None: featured_form = FeaturedEmailForm(request, c) context['featured_email_form'] = featured_form context['last_featured_email'] = last_featured_email return render_to_response('channels/show-channel.html', context, context_instance=RequestContext(request))