Handle bare numbers and rfc names with a space for the /doc/html view. Fixes #1999. Commit ready for merge.

- Legacy-Id: 19095
This commit is contained in:
Robert Sparks 2021-06-07 21:25:42 +00:00
parent c8ed251ae3
commit 5f6816d742
3 changed files with 13 additions and 0 deletions

View file

@ -690,6 +690,14 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=draft.name, rev=draft.rev)))
self.assertEqual(r.status_code, 200)
rfc = WgRfcFactory()
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.canonical_name())))
self.assertEqual(r.status_code, 200)
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.rfc_number())))
self.assertRedirects(r, urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.canonical_name())))
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=f'RFC {rfc.rfc_number()}')))
self.assertRedirects(r, urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.canonical_name())))
# expired draft
draft.set_state(State.objects.get(type="draft", slug="expired"))

View file

@ -66,6 +66,7 @@ urlpatterns = [
url(r'^html/(?P<name>bcp[0-9]+?)(\.txt|\.html)?/?$', RedirectView.as_view(url=settings.RFC_EDITOR_INFO_BASE_URL+"%(name)s", permanent=False)),
url(r'^html/(?P<name>std[0-9]+?)(\.txt|\.html)?/?$', RedirectView.as_view(url=settings.RFC_EDITOR_INFO_BASE_URL+"%(name)s", permanent=False)),
url(r'^html/%(name)s(?:-%(rev)s)?(\.txt|\.html)?/?$' % settings.URL_REGEXPS, views_doc.document_html),
url(r'^html/(?P<name>[Rr][Ff][Cc] [0-9]+?)(\.txt|\.html)?/?$', views_doc.document_html),
url(r'^all/?$', views_search.index_all_drafts),
url(r'^active/?$', views_search.index_active_drafts),

View file

@ -670,6 +670,10 @@ def document_html(request, name, rev=None):
if rev and not name.startswith('charter-') and re.search('[0-9]{1,2}-[0-9]{2}', rev):
name = "%s-%s" % (name, rev[:-3])
rev = rev[-2:]
if re.match("^[0-9]+$", name):
return redirect('ietf.doc.views_doc.document_html',name=f'rfc{name}')
if re.match("^[Rr][Ff][Cc] [0-9]+$",name):
return redirect('ietf.doc.views_doc.document_html',name=f'rfc{name[4:]}')
docs = Document.objects.filter(docalias__name=name)
if rev and not docs.exists():
# handle some special cases, like draft-ietf-tsvwg-ieee-802-11