def test_hash(self): """ Tests that hash function is a bijection """ for i in xrange(len(PRIMES)-1): num = 56 ** i + random.randint(1, 50) self.assertEqual(mmi_unhash(mmi_hash(num)), num)
def default_redirect(request, short): if len(short) < MIN_LENGTH: return HttpResponseNotFound() try: pk = mmi_unhash(short) except: raise Http404 url = get_object_or_404(Url, id=pk) ip = get_client_ip(request) ua_text = request.META.get('HTTP_USER_AGENT') ua_hash = hashlib.sha1(ua_text).hexdigest() ua, created = UserAgent.objects.get_or_create(hash=ua_hash, defaults={'text': ua_text}) new_access_log = AccessLog.objects.create(url=url, ip=ip, useragent=ua) url.access_logs.add(new_access_log) url.access_count += 1 url.save() return redirect(url.origin)