Skip to content

Commit 71429f5

Browse files
committed
Alternative review pages which shouldn't shift when new test-URLs are added. Old review URLs still work, but withouth guarantee against shifting when new test-URLs are added.
- Legacy-Id: 600
1 parent 09c0829 commit 71429f5

2 files changed

Lines changed: 31 additions & 12 deletions

File tree

ietf/urls.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
# Uncomment this for review pages:
3838
(r'^review/$', 'ietf.utils.views.review'),
3939
(r'^review/all/$', 'ietf.utils.views.all'),
40-
(r'^review/(?P<page>[0-9]+)/$', 'ietf.utils.views.review'),
41-
(r'^review/top/(?P<page>[0-9]+)/$', 'ietf.utils.views.top'),
40+
(r'^review/(?P<page>[0-9a-f]+)/$', 'ietf.utils.views.review'),
41+
(r'^review/top/(?P<page>[0-9a-f]+)/$', 'ietf.utils.views.top'),
4242

4343
)
4444

ietf/utils/views.py

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,58 @@
11
from django.shortcuts import render_to_response as render
2+
import time
23

34
testurls = []
45
urlcount = 0
6+
hash2url = {}
7+
num2hash = {}
8+
hash2num = {}
59
host = "merlot.tools.ietf.org:31415"
610

711
def get_info(page):
812
global testurls
13+
global hash2url
14+
global num2hash
15+
global hash2num
916
global urlcount
1017
if not testurls:
1118
from ietf.tests import get_testurls
1219
testurls = [ tuple for tuple in get_testurls() if tuple[2] and "200" in tuple[0] ]
1320
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+
1425
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]
2342
return info
2443

2544
def review(request, page=0, panes=None):
2645
return render("utils/frame2.html", {"info": get_info(page) })
2746

28-
def top(request, page=None):
47+
def top(request, page=0):
2948
return render("utils/review.html", {"info": get_info(page) })
3049

3150
def all(request):
3251
get_info(0) # prime the list
3352
info = []
3453
for i in range(urlcount):
3554
item = {}
36-
item["num"] = i
55+
item["num"] = num2hash[i]
3756
item["new"] = testurls[i][1]
3857
item["old"] = testurls[i][2]
3958
info.append(item)

0 commit comments

Comments
 (0)