예제 #1
0
파일: tests.py 프로젝트: davideuler/gai
 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)
예제 #2
0
파일: views.py 프로젝트: davideuler/gai
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)