Beispiel #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'})
Beispiel #3
0
    def test_redirect(self):
        url = "http://google.com/"

        link = Link(url=url)
        link.save()

        response = self.client.get(link.short_url, follow=True)

        assert response.redirect_chain[1][0] == link.url
Beispiel #4
0
def submit(request):
    """
    View for submitting a URL to be shortened
    """
    form = LinkSubmitForm(request.POST)
    if form.is_valid():
        kwargs = {'url': form.cleaned_data['url']}
        custom = form.cleaned_data['custom']
        if custom:
            kwargs.update({'is_custom': True, 'short_url': custom})
        link = Link(**kwargs)
        link.save()
        return render(request, 'submit_success.html', {'link': link})
    else:
        return render(request, 'submit_failed.html', {'link_form': form})
def submit(request):
    """
    View for submitting a URL to be shortened
    """
    form = LinkSubmitForm(request.POST)
    if form.is_valid():
        kwargs = {'url': form.cleaned_data['url']}
        custom = form.cleaned_data['custom']
        if custom:
            kwargs.update({'is_custom': True, 'short_url': custom})
        link = Link(**kwargs)
        link.save()
        return render(request, 'submit_success.html', {'link': link})
    else:
        return render(request, 'submit_failed.html', {'link_form': form})
Beispiel #6
0
def create(request):
    request_json = json.loads(request.body.decode('utf-8'))
    print(request_json)
    if 'url' in request_json and len(request_json['url'].strip()) > 0:
        val = URLValidator()
        try:
            long_url = url_normalize(request_json['url'].strip())
            val(long_url)
            existing_link = Link.objects.filter(url=long_url)
            if existing_link.count() == 0:
                link = Link(url=long_url, date_created=timezone.now())
                link.save()
            else:
                link = existing_link[0]
            return JsonResponse({
                'short_url':
                request.build_absolute_uri(
                    reverse('shortener:goto', args=[link.short_url()]))
            })
        except ValidationError:
            return JsonResponse({'error': 'URL is not valid.'}, status=400)
    else:
        return JsonResponse({'error': 'No URL given.'}, status=400)