Ejemplo n.º 1
0
def authenticate(request):
    redirectURL = request.REQUEST.get('redirect')
    sessionID = request.REQUEST.get('session')
    verification = sha.new(settings.SECRET_KEY + str(redirectURL) +
                           str(sessionID)).hexdigest()
    context = {
        'redirect': redirectURL,
        'session': sessionID,
        'verification': verification
    }
    if request.method == 'POST':
        if request.POST.get('submit') == 'No':
            return util.redirect('/')
        if request.POST.get('verification') == verification:
            engine = import_module(settings.SESSION_ENGINE)
            session = engine.SessionStore(sessionID)

            session['apiUser'] = request.user.id
            session.save()
            context['session'] = session.session_key
            if redirectURL:
                return util.redirect(redirectURL,
                                     {'session': session.session_key})
            else:
                context['success'] = True
        else:
            context['error'] = _("Invalid verification code.")
    return render_to_response('api/authenticate.html',
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 2
0
def authenticate(request):
    redirectURL = request.REQUEST.get('redirect')
    sessionID = request.REQUEST.get('session')
    verification = sha.new(settings.SECRET_KEY +
                           str(redirectURL) + str(sessionID)).hexdigest()
    context = {
        'redirect': redirectURL,
        'session': sessionID,
        'verification': verification
    }
    if request.method == 'POST':
        if request.POST.get('submit') == 'No':
            return util.redirect('/')
        if request.POST.get('verification') == verification:
            engine = import_module(settings.SESSION_ENGINE)
            session = engine.SessionStore(sessionID)

            session['apiUser'] = request.user.id
            session.save()
            context['session'] = session.session_key
            if redirectURL:
                return util.redirect(redirectURL,
                                     {'session': session.session_key})
            else:
                context['success'] = True
        else:
            context['error'] = _("Invalid verification code.")
    return render_to_response('api/authenticate.html',
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 3
0
def submit_channel(request):
    """
    Called when the user is submitting a channel.  If the SESSION_KEY
    cookie isn't set, then we redirect back to the first step.
    XXX: check for clients that don't support cookies

    If the submisstion used the GET method, we create a form that allows
    the submitter to describe the feed in more detail (languages, categories,
    tags, etc.).

    If the submission used the POST method, we check to see if the submitted
    form is valid; if it is we create the channel and redirect to the
    post-submission page.  Otherwise, redisplay the form with the errors
    highlighted.
    """
    session_dict = request.session[SESSION_KEY]
    url_required = not request.user.has_perm('channels.add_site')
    if 'subscribe' in session_dict:
        return util.redirect('/submit/')
    if request.method != 'POST':
        form = SubmitChannelForm(url_required=url_required)
        form.set_defaults(session_dict)
        session_dict['detected_thumbnail'] = form.set_image_from_feed
        request.session.modified = True
    else:
        form = SubmitChannelForm(request.POST, request.FILES,
                                 url_required=url_required)
        if session_dict['owner-is-fan']:
            form.fields['publisher'].required = False
        if form.user_uploaded_file():
            session_dict['detected_thumbnail'] = False
            request.session.modified = True
        if form.is_valid():
            feed_url = session_dict['url']
            channel = form.save_channel(request.user, feed_url)
            session_dict['subscribe'] = channel.get_subscription_url()
            request.session.modified = True
            if request.FILES.get('thumbnail_file'):
                request.FILES['thumbnail_file'].close()
            return util.redirect('submit/after')
        else:
            form.save_submitted_thumbnail()
    context = form.get_template_data()
    if session_dict.get('detected_thumbnail'):
        context['thumbnail_description'] = _("Current image (from the feed)")
    else:
        context['thumbnail_description'] = _("Current image (uploaded)")
    response = render_to_response('submit/submit-channel.html', context,
                                  context_instance=RequestContext(request))
    if request.FILES.get('thumbnail_file'):
        request.FILES['thumbnail_file'].close()
    return response
Ejemplo n.º 4
0
def submit_channel(request):
    """
    Called when the user is submitting a channel.  If the SESSION_KEY
    cookie isn't set, then we redirect back to the first step.
    XXX: check for clients that don't support cookies

    If the submisstion used the GET method, we create a form that allows
    the submitter to describe the feed in more detail (languages, categories,
    tags, etc.).

    If the submission used the POST method, we check to see if the submitted
    form is valid; if it is we create the channel and redirect to the
    post-submission page.  Otherwise, redisplay the form with the errors
    highlighted.
    """
    session_dict = request.session[SESSION_KEY]
    url_required = not request.user.has_perm("channels.add_site")
    if "subscribe" in session_dict:
        return util.redirect("/submit/")
    if request.method != "POST":
        form = SubmitChannelForm(url_required=url_required)
        form.set_defaults(session_dict)
        session_dict["detected_thumbnail"] = form.set_image_from_feed
        request.session.modified = True
    else:
        form = SubmitChannelForm(request.POST, request.FILES, url_required=url_required)
        if session_dict["owner-is-fan"]:
            form.fields["publisher"].required = False
        if form.user_uploaded_file():
            session_dict["detected_thumbnail"] = False
            request.session.modified = True
        if form.is_valid():
            feed_url = session_dict["url"]
            channel = form.save_channel(request.user, feed_url)
            session_dict["subscribe"] = channel.get_subscription_url()
            request.session.modified = True
            if request.FILES.get("thumbnail_file"):
                request.FILES["thumbnail_file"].close()
            return util.redirect("submit/after")
        else:
            form.save_submitted_thumbnail()
    context = form.get_template_data()
    if session_dict.get("detected_thumbnail"):
        context["thumbnail_description"] = _("Current image (from the feed)")
    else:
        context["thumbnail_description"] = _("Current image (uploaded)")
    response = render_to_response("submit/submit-channel.html", context, context_instance=RequestContext(request))
    if request.FILES.get("thumbnail_file"):
        request.FILES["thumbnail_file"].close()
    return response
Ejemplo n.º 5
0
def submit_feed(request):
    destroy_submit_url_session(request)
    url_required = not request.user.has_perm("channels.add_site")
    if request.method != "POST":
        form = FeedURLForm(url_required=url_required)
        form.fields["url"].initial = request.GET.get("url", "")
        form.fields["name"].initial = request.GET.get("name", "")
    else:
        submit_type = request.POST.get("type", "")
        form = FeedURLForm(request.POST.copy(), url_required=url_required)
        if form.is_valid():
            if form.cleaned_data["url"]:
                request.session[SESSION_KEY] = form.get_feed_data()
            else:
                request.session[SESSION_KEY] = form.cleaned_data
            if "Fan" in submit_type:
                request.session[SESSION_KEY]["owner-is-fan"] = True
            else:
                request.session[SESSION_KEY]["owner-is-fan"] = False
            return util.redirect("submit/step2")
        else:
            if "url" in form.data:
                try:
                    channel = Channel.objects.get(url=form.data["url"])
                except Channel.DoesNotExist:
                    pass
                else:
                    request.session[SESSION_KEY] = {"url": channel.url}
                    return render_to_response(
                        "submit/submit-feed-exists.html", {"channel": channel}, context_instance=RequestContext(request)
                    )
    return render_to_response("submit/submit-feed-url.html", {"form": form}, context_instance=RequestContext(request))
Ejemplo n.º 6
0
def post(request, id):
    post = get_object_or_404(ModeratorPost, pk=id)
    if request.method == 'POST':
        if request.POST['action'] == 'delete':
            post.delete()
            return util.redirect_to_referrer(request)
    return util.redirect('notes/moderator-board')
Ejemplo n.º 7
0
def register_view(request):
    next = request.GET.get('next')
    if next is None:
        next = request.POST.get('next')
    if next is None:
        next = request.META.get('HTTP_REFERER')
    if next is None:
        next = ''
    register_form = user_forms.RegisterForm(request.POST)
    if register_form.is_valid():
        #try:
        user = register_form.make_user()
        #except User.:
        #    # check again, it's probably a duplicate user
        #    register_form.full_clean()
        #else:
        login(request, user)
        request.session['notifications'] = [(_('Thanks for registering!'),
                                             _("We've sent a confirmation "
                                               "e-mail to the address you "
                                               "provided."))]
        return util.redirect(next)
    return render_to_response('registration/login.html', {
        'next': next,
        'login_form': AuthenticationForm(),
        'register_form': register_form,
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 8
0
def register_view(request):
    next = request.GET.get('next')
    if next is None:
        next = request.POST.get('next')
    if next is None:
        next = request.META.get('HTTP_REFERER')
    if next is None:
        next = ''
    register_form = user_forms.RegisterForm(request.POST)
    if register_form.is_valid():
        #try:
            user = register_form.make_user()
        #except User.:
        #    # check again, it's probably a duplicate user
        #    register_form.full_clean()
        #else:
            login(request, user)
            request.session['notifications'] = [(_('Thanks for registering!'),
                                                 _("We've sent a confirmation "
                                                   "e-mail to the address you "
                                                   "provided."))]
            return util.redirect(next)
    return render_to_response('registration/login.html', {
        'next' : next,
        'login_form': AuthenticationForm(),
        'register_form': register_form,
    }, context_instance=RequestContext(request))
Ejemplo n.º 9
0
def post(request, id):
    post = get_object_or_404(ModeratorPost, pk=id)
    if request.method == 'POST':
        if request.POST['action'] == 'delete':
            post.delete()
            return util.redirect_to_referrer(request)
    return util.redirect('notes/moderator-board')
Ejemplo n.º 10
0
def email_owners(request):
    if request.method != 'POST':
        form = forms.EmailChannelOwnersForm()
    else:
        form = forms.EmailChannelOwnersForm(request.POST)
        if form.is_valid():
            form.send_email(request.user)
            return util.redirect('moderate')
    return util.render_to_response(request, 'email-channel-owners.html', {
        'form': form})
Ejemplo n.º 11
0
def email_owners(request):
    if request.method != 'POST':
        form = forms.EmailChannelOwnersForm()
    else:
        form = forms.EmailChannelOwnersForm(request.POST)
        if form.is_valid():
            form.send_email(request.user)
            return util.redirect('moderate')
    return util.render_to_response(request, 'email-channel-owners.html',
                                   {'form': form})
Ejemplo n.º 12
0
def for_user(request, user_name_or_id):
    try:
        user = User.objects.get(username=user_name_or_id)
    except User.DoesNotExist:
        try:
            user = get_object_or_404(User, pk=user_name_or_id)
        except ValueError:
            raise Http404
    if not user.is_active:
        raise Http404
    expected_path = '/user/%s' % user.username
    if request.path != expected_path:
        return util.redirect(expected_path)
    if request.user.is_superuser or request.user.id == user.id:
        try:
            cobrand = Cobranding.objects.get(user=user.username)
        except Cobranding.DoesNotExist:
            cobrand = None
    else:
        cobrand = None

    page = request.GET.get('page', 1)

    feed_paginator = Paginator(user.channels.filter(url__isnull=False), 10)
    try:
        feed_page = feed_paginator.page(page)
    except InvalidPage:
        feed_page = None

    site_paginator = Paginator(user.channels.filter(url__isnull=True), 10)
    try:
        site_page = site_paginator.page(page)
    except InvalidPage:
        site_page = None

    # find the biggest paginator and use that page for calculating the links
    if not feed_paginator:
        biggest = site_page
    elif not site_paginator:
        biggest = feed_page
    elif feed_paginator.count > site_paginator.count:
        biggest = feed_page
    else:
        biggest = site_page

    return render_to_response('user_profile/for-user.html', {
        'for_user': user,
        'title': _("Shows for %s") % user.username,
        'cobrand': cobrand,
        'biggest': biggest,
        'feed_page': feed_page,
        'site_page': site_page,
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 13
0
def for_user(request, user_name_or_id):
    try:
        user = User.objects.get(username=user_name_or_id)
    except User.DoesNotExist:
        try:
            user = get_object_or_404(User, pk=user_name_or_id)
        except ValueError:
            raise Http404
    if not user.is_active:
        raise Http404
    expected_path = '/user/%s' % user.username
    if request.path != expected_path:
        return util.redirect(expected_path)
    if request.user.is_superuser or request.user.id == user.id:
        try:
            cobrand = Cobranding.objects.get(user=user.username)
        except Cobranding.DoesNotExist:
            cobrand = None
    else:
        cobrand = None

    page = request.GET.get('page', 1)

    feed_paginator = Paginator(user.channels.filter(url__isnull=False), 10)
    try:
        feed_page = feed_paginator.page(page)
    except InvalidPage:
        feed_page = None

    site_paginator = Paginator(user.channels.filter(url__isnull=True), 10)
    try:
        site_page = site_paginator.page(page)
    except InvalidPage:
        site_page = None

    # find the biggest paginator and use that page for calculating the links
    if not feed_paginator:
        biggest = site_page
    elif not site_paginator:
        biggest = feed_page
    elif feed_paginator.count > site_paginator.count:
        biggest = feed_page
    else:
        biggest = site_page

    return render_to_response('user_profile/for-user.html', {
            'for_user': user,
            'title': _("Shows for %s") % user.username,
            'cobrand': cobrand,
            'biggest': biggest,
            'feed_page': feed_page,
            'site_page': site_page,
            }, context_instance=RequestContext(request))
Ejemplo n.º 14
0
def claim(request):
    if request.method != "POST":
        return util.redirect("submit")
    url = request.session[SESSION_KEY]["url"]
    channel = Channel.objects.get(url=url)
    ChannelNote.objects.create(
        channel=channel,
        user=request.user,
        title="",
        body=("This user (%s) has asked to claim this channel." % (request.user.username)),
    )
    return render_to_response(
        "submit/submit-feed-claim.html", {"channel": channel}, context_instance=RequestContext(request)
    )
Ejemplo n.º 15
0
def add_note(request):
    try:
        channel_id = int(request.POST['channel-id'])
    except (ValueError, KeyError):
        raise Http404
    channel = get_object_or_404(Channel, pk=channel_id)
    note = ChannelNote.create_note_from_request(request)
    if not request.user.has_perm('notes.add_channelnote') and \
            channel.owner != request.user:
        return redirect_to_login(request.path)
    channel.notes.add(note)
    if request.user != channel.owner:
        note.send_email()
    return util.redirect('channels/%d' % channel.id)
Ejemplo n.º 16
0
def add_note(request):
    try:
        channel_id = int(request.POST['channel-id'])
    except (ValueError, KeyError):
        raise Http404
    channel = get_object_or_404(Channel, pk=channel_id)
    note = ChannelNote.create_note_from_request(request)
    if not request.user.has_perm('notes.add_channelnote') and \
            channel.owner != request.user:
        return redirect_to_login(request.path)
    channel.notes.add(note)
    if request.user != channel.owner:
        note.send_email()
    return util.redirect('channels/%d' % channel.id)
Ejemplo n.º 17
0
def claim(request):
    if request.method != 'POST':
        return util.redirect('submit')
    url = request.session[SESSION_KEY]['url']
    channel = Channel.objects.get(url=url)
    ChannelNote.objects.create(channel=channel,
                               user=request.user,
                               title='',
                               body=(
            'This user (%s) has asked to claim this channel.' % (
                request.user.username)))
    return render_to_response('submit/submit-feed-claim.html',
                              {'channel': channel},
                              context_instance=RequestContext(request))
Ejemplo n.º 18
0
def after_submit(request):
    subscribe = request.session[SESSION_KEY].get("subscribe")
    if not subscribe:
        return util.redirect("submit")

    def img(url):
        return "<img src='%s' alt='Miro Video Player' border='0' " "class='one-click-image' />" % url

    def link(inside):
        return "<a href='%s' title='Miro: Internet TV'>%s</a>" % (subscribe, inside)

    textLink = "%s" % link("Your 1-Click Subscribe URL")
    button_prefix = "http://subscribe.getmiro.com/img/buttons/"
    buttons = ["one-click-subscribe-88X34.png", "one-click-subscribe-109X34.png"]
    buttonHTML = [link(img(button_prefix + url)) for url in buttons]
    context = {"buttons": buttonHTML, "subscribe": subscribe, "textlink": textLink}
    return render_to_response("submit/after-submit.html", context, context_instance=RequestContext(request))
Ejemplo n.º 19
0
def edit_user_form(request, user):
    if user.has_perm('channels.change_channel'):
        FormClass = user_forms.EditModeratorForm
    elif user.channels.count():
        FormClass = user_forms.EditChannelOwnerForm
    else:
        FormClass = user_forms.EditUserForm

    if request.method == 'POST':
        form = FormClass(user, request.POST)
        if form.is_valid():
            form.update_user(request)
            return util.redirect(request.path)
    else:
        form = FormClass(user)
    return render_to_response('user_profile/edit-user.html', {
            'for_user':user,
            'form': form}, context_instance=RequestContext(request))
Ejemplo n.º 20
0
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))
Ejemplo n.º 21
0
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))
Ejemplo n.º 22
0
def edit_user_form(request, user):
    if user.has_perm('channels.change_channel'):
        FormClass = user_forms.EditModeratorForm
    elif user.channels.count():
        FormClass = user_forms.EditChannelOwnerForm
    else:
        FormClass = user_forms.EditUserForm

    if request.method == 'POST':
        form = FormClass(user, request.POST)
        if form.is_valid():
            form.update_user(request)
            return util.redirect(request.path)
    else:
        form = FormClass(user)
    return render_to_response('user_profile/edit-user.html', {
        'for_user': user,
        'form': form
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 23
0
def after_submit(request):
    subscribe = request.session[SESSION_KEY].get('subscribe')
    if not subscribe:
        return util.redirect('submit')
    def img(url):
        return ("<img src='%s' alt='Miro Video Player' border='0' "
                "class='one-click-image' />" % url)
    def link(inside):
        return "<a href='%s' title='Miro: Internet TV'>%s</a>" % (subscribe,
                                                                  inside)
    textLink = '%s' % link("Your 1-Click Subscribe URL")
    button_prefix = 'http://subscribe.getmiro.com/img/buttons/'
    buttons = [
        'one-click-subscribe-88X34.png',
        'one-click-subscribe-109X34.png']
    buttonHTML = [link(img(button_prefix + url)) for url in buttons]
    context = {
        'buttons': buttonHTML,
        'subscribe': subscribe,
        'textlink': textLink
        }
    return render_to_response('submit/after-submit.html', context,
                              context_instance=RequestContext(request))
Ejemplo n.º 24
0
def submit_feed(request):
    destroy_submit_url_session(request)
    url_required = not request.user.has_perm('channels.add_site')
    if request.method != 'POST':
        form = FeedURLForm(url_required=url_required)
        form.fields['url'].initial = request.GET.get('url', '')
        form.fields['name'].initial = request.GET.get('name', '')
    else:
        submit_type = request.POST.get('type', '')
        form = FeedURLForm(request.POST.copy(),
            url_required=url_required)
        if form.is_valid():
            if form.cleaned_data['url']:
                request.session[SESSION_KEY] = form.get_feed_data()
            else:
                request.session[SESSION_KEY] = form.cleaned_data
            if 'Fan' in submit_type:
                request.session[SESSION_KEY]['owner-is-fan'] = True
            else:
                request.session[SESSION_KEY]['owner-is-fan'] = False
            return util.redirect("submit/step2")
        else:
            if 'url' in form.data:
                try:
                    channel = Channel.objects.get(url=form.data['url'])
                except Channel.DoesNotExist:
                    pass
                else:
                    request.session[SESSION_KEY] = {'url': channel.url}
                    return render_to_response(
                        'submit/submit-feed-exists.html',
                        {'channel': channel},
                        context_instance=RequestContext(request))
    return render_to_response('submit/submit-feed-url.html',
                              {'form': form},
                              context_instance=RequestContext(request))
Ejemplo n.º 25
0
def add_moderator_post(request):
    post = ModeratorPost.create_note_from_request(request)
    send_checked = bool(request.POST.get('send-email'))
    post.send_email(send_checked)
    post.save()
    return util.redirect('notes/moderator-board')
Ejemplo n.º 26
0
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))
Ejemplo n.º 27
0
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))
Ejemplo n.º 28
0
def toggle_frontpage(request):
    if request.method == 'POST':
        category = Category.objects.get(pk=request.POST['id'])
        category.on_frontpage = not category.on_frontpage
        category.save()
    return util.redirect('genres/moderate')
Ejemplo n.º 29
0
def latest(request, id):
    items = Item.objects.filter(channel=id).order_by('-date')
    if not items:
        raise Http404
    else:
        return util.redirect(items[0].url)
Ejemplo n.º 30
0
def add_moderator_post(request):
    post = ModeratorPost.create_note_from_request(request)
    send_checked = bool(request.POST.get('send-email'))
    post.send_email(send_checked)
    post.save()
    return util.redirect('notes/moderator-board')
Ejemplo n.º 31
0
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))
Ejemplo n.º 32
0
 def check(request, *args, **kw):
     if SESSION_KEY not in request.session:
         return util.redirect("submit")
     return function(request, *args, **kw)
Ejemplo n.º 33
0
 def check(request, *args, **kw):
     if SESSION_KEY not in request.session:
         return util.redirect('submit')
     return function(request, *args, **kw)
Ejemplo n.º 34
0
def latest(request, id):
    items = Item.objects.filter(channel=id).order_by('-date')
    if not items:
        raise Http404
    else:
        return util.redirect(items[0].url)
Ejemplo n.º 35
0
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))