Example #1
0
def submit(request):
    """
    View for submitting a URL
    """
    if settings.REQUIRE_LOGIN and not request.user.is_authenticated():
        # TODO redirect to an error page
        raise Http404
    url = None
    link_form = None
    if request.GET:
        link_form = LinkSubmitForm(request.GET)
    elif request.POST:
        link_form = LinkSubmitForm(request.POST)
    if link_form and link_form.is_valid():
        url = link_form.cleaned_data["u"]
        link = None
        try:
            link = Link.objects.get(url=url)
        except Link.DoesNotExist:
            pass
        if link == None:
            new_link = Link(url=url)
            new_link.save()
            link = new_link
        values = default_values(request)
        values["link"] = link
        return render_to_response("shortener/submit_success.html", values, context_instance=RequestContext(request))
    values = default_values(request, link_form=link_form)
    return render_to_response("shortener/submit_failed.html", values, context_instance=RequestContext(request))
def submit__ajax(request):
    url = None
    link_form = None
    if request.GET:
        link_form = LinkSubmitForm(request.GET)
    elif request.POST:
        link_form = LinkSubmitForm(request.POST)

    if link_form:
        if link_form.is_valid():
            url = link_form.cleaned_data['u']
            link = None
            try:
                if settings.SITE_NAME in url:
                    _u = urlparse(url)
                    link = Link.objects.get(pk=base62.to_decimal(_u.path))
                else:
                    link = Link.objects.get(url=url)
            except Link.DoesNotExist:
                pass
            if link == None:
                new_link = Link(url=url)
                new_link.save()
                link = new_link

            return JSONResponse({'url': url,
                                 'short_url': link.short_url(),
                                 'score': link.usage_count,
                                 'submitted': link.date_submitted.strftime('%b %d, %Y')})
        else:
            return JSONResponse({'error':[link_form.error_class.as_text(v) for k, v in link_form.errors.items()]})


    return JSONResponse({'error':'URL submission failed'})