|
1 | 1 | from django.shortcuts import render_to_response as render |
| 2 | +import time |
2 | 3 |
|
3 | 4 | testurls = [] |
4 | 5 | urlcount = 0 |
| 6 | +hash2url = {} |
| 7 | +num2hash = {} |
| 8 | +hash2num = {} |
5 | 9 | host = "merlot.tools.ietf.org:31415" |
6 | 10 |
|
7 | 11 | def get_info(page): |
8 | 12 | global testurls |
| 13 | + global hash2url |
| 14 | + global num2hash |
| 15 | + global hash2num |
9 | 16 | global urlcount |
10 | 17 | if not testurls: |
11 | 18 | from ietf.tests import get_testurls |
12 | 19 | testurls = [ tuple for tuple in get_testurls() if tuple[2] and "200" in tuple[0] ] |
13 | 20 | urlcount = len(testurls) |
| 21 | + num2hash = dict([ (i, "%x"% (testurls[i][1].__hash__() +0x80000000)) for i in range(urlcount)]) |
| 22 | + hash2url = dict([ (num2hash[i], testurls[i][1]) for i in range(urlcount)]) |
| 23 | + hash2num = dict([ (num2hash[num], num) for num in num2hash ]) |
| 24 | + |
14 | 25 | info = {} |
15 | | - page = int(page) |
16 | | - if not page in range(urlcount): |
17 | | - page = 0 |
18 | | - info["next"] = (page + 1) % urlcount |
19 | | - info["this"] = page |
20 | | - info["prev"] = (page - 1 + urlcount) % urlcount |
21 | | - info["new"] = "http://%s/%s" % (host, testurls[page][1][1:]) |
22 | | - info["old"] = testurls[page][2] |
| 26 | + try: |
| 27 | + page = int(page) |
| 28 | + except: |
| 29 | + pass |
| 30 | + if page in num2hash: |
| 31 | + page = num2hash[page] |
| 32 | + if not page in hash2url: |
| 33 | + page = num2hash[0] |
| 34 | + hash = page |
| 35 | + assert(hash not in num2hash) |
| 36 | + num = hash2num[hash] |
| 37 | + info["next"] = num2hash[ (num + 1) % urlcount ] |
| 38 | + info["this"] = hash |
| 39 | + info["prev"] = num2hash[ (num - 1 + urlcount) % urlcount ] |
| 40 | + info["new"] = "http://%s/%s" % (host, testurls[num][1][1:]) |
| 41 | + info["old"] = testurls[num][2] |
23 | 42 | return info |
24 | 43 |
|
25 | 44 | def review(request, page=0, panes=None): |
26 | 45 | return render("utils/frame2.html", {"info": get_info(page) }) |
27 | 46 |
|
28 | | -def top(request, page=None): |
| 47 | +def top(request, page=0): |
29 | 48 | return render("utils/review.html", {"info": get_info(page) }) |
30 | 49 |
|
31 | 50 | def all(request): |
32 | 51 | get_info(0) # prime the list |
33 | 52 | info = [] |
34 | 53 | for i in range(urlcount): |
35 | 54 | item = {} |
36 | | - item["num"] = i |
| 55 | + item["num"] = num2hash[i] |
37 | 56 | item["new"] = testurls[i][1] |
38 | 57 | item["old"] = testurls[i][2] |
39 | 58 | info.append(item) |
|
0 commit comments