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