Skip to content

Commit 9754abc

Browse files
committed
Create redirects from URLs with document-ID to filename based ones.
- Legacy-Id: 815
1 parent 8868274 commit 9754abc

3 files changed

Lines changed: 23 additions & 10 deletions

File tree

ietf/idindex/testurl.list

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
200,skipdiff /drafts/all/ https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=all
1010
200,sort /drafts/dead/ https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=dead
1111
#200,sort /drafts/dead/?sort=name https://datatracker.ietf.org/public/idindex.cgi?command=show_list&cat=dead&sort=name
12-
200,skipdiff /drafts/9574/related/ https://datatracker.ietf.org/public/idindex.cgi?command=view_related_docs&id=9574
12+
301,skipdiff /drafts/9574/related/ https://datatracker.ietf.org/public/idindex.cgi?command=view_related_docs&id=9574
1313
200 /drafts/draft-ietf-dnsext-dnssec-protocol/related/
14-
200 /drafts/9574/ https://datatracker.ietf.org/public/idindex.cgi?command=id_detail&id=9574
14+
301,skipdiff /drafts/9574/ https://datatracker.ietf.org/public/idindex.cgi?command=id_detail&id=9574
1515
200,skipredirect /drafts/draft-ietf-dnsext-dnssec-protocol/ https://datatracker.ietf.org/public/idindex.cgi?command=id_detail&id=9574
1616
200 /drafts/all_id_txt.html
1717
200 /drafts/all_id.html

ietf/idindex/urls.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424
(r'^(?P<cat>rfc)/$', views.showdocs),
2525
(r'^(?P<cat>current)/$', views.showdocs),
2626
(r'^(?P<cat>dead)/$', views.showdocs),
27-
(r'^(?P<id>\d+)/related/$', views.view_related_docs),
27+
(r'^(?P<id>\d+)/related/$', views.redirect_related),
2828
(r'^(?P<slug>[^/]+)/related/$', views.view_related_docs),
29-
(r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict),
30-
(r'^(?P<slug>[^/]+)/$', 'django.views.generic.list_detail.object_detail', dict(info_dict, slug_field='filename')),
29+
(r'^(?P<object_id>\d+)/$', views.redirect_id),
30+
(r'^(?P<slug>[^/]+)/$', views.view_id, dict(info_dict, slug_field='filename')),
3131
(r'^all_id_txt.html$', views.all_id, { 'template_name': 'idindex/all_id_txt.html' }),
3232
(r'^all_id.html$', views.all_id, { 'template_name': 'idindex/all_id.html' }),
3333
(r'^$', views.search),

ietf/idindex/views.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from django.template import RequestContext, loader
88
from django.shortcuts import render_to_response, get_object_or_404
99
from django.core.urlresolvers import reverse
10+
from django.views.generic.list_detail import object_detail
1011
from ietf.idtracker.models import Acronym, IETFWG, InternetDraft, Rfc
1112
from ietf.idindex.forms import IDIndexSearchForm
1213
from ietf.idindex.models import alphabet, orgs, orgs_dict
@@ -214,13 +215,25 @@ def process(doc, skip=(0,0,0)):
214215
process(startdoc, (0,0,0))
215216
return related
216217

217-
def view_related_docs(request, **kwargs):
218-
if kwargs.has_key('id'):
219-
startdoc = get_object_or_404(InternetDraft, id_document_tag=kwargs['id'])
220-
else:
221-
startdoc = get_object_or_404(InternetDraft, filename=kwargs['slug'])
218+
def redirect_related(request, id):
219+
doc = get_object_or_404(InternetDraft, id_document_tag=id)
220+
return HttpResponsePermanentRedirect(reverse(view_related_docs, args=[doc.filename]))
221+
222+
def view_related_docs(request, slug):
223+
startdoc = get_object_or_404(InternetDraft, filename=slug)
222224
related = related_docs(startdoc)
223225
context = {'related': related, 'numdocs': len(related)}
224226
context.update(base_extra)
225227
return render_to_response("idindex/view_related_docs.html", context,
226228
context_instance=RequestContext(request))
229+
230+
def redirect_id(request, object_id):
231+
'''Redirect from historical document ID to preferred filename url.'''
232+
doc = get_object_or_404(InternetDraft, id_document_tag=object_id)
233+
return HttpResponsePermanentRedirect(reverse(view_id, args=[doc.filename]))
234+
235+
# Wrapper around object_detail to give permalink a handle.
236+
# The named-URLs feature in django 0.97 will eliminate the
237+
# need for these.
238+
def view_id(*args, **kwargs):
239+
return object_detail(*args, **kwargs)

0 commit comments

Comments
 (0)