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'})
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
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 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)