From d42aab0d0ad280a92bc34640219fe8895795c651 Mon Sep 17 00:00:00 2001 From: Russ Housley Date: Sat, 6 Mar 2021 23:30:13 +0000 Subject: [PATCH] Point bibxml3 to I-D archive so that all version numbers are handled properly, and perform more robust revision suffix cleanup. Fixes #3188. - Legacy-Id: 18905 --- ietf/doc/views_doc.py | 27 +++++++++++++++++---------- ietf/templates/doc/bibxml.xml | 2 +- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index c4b34c9d7..536e70580 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -832,10 +832,15 @@ def document_history(request, name): def document_bibtex(request, name, rev=None): - # If URL_REGEXPS put trailing digits in rev, they must be two digits + # Make sure URL_REGEXPS did not grab too much for the rev number if rev != None and len(rev) != 2: - name = name+"-"+rev - rev = None + mo = re.search(r"^(?P[0-9]{1,2})-(?P[0-9]{2})$", rev) + if mo: + name = name+"-"+mo.group(1) + rev = mo.group(2) + else: + name = name+"-"+rev + rev = None doc = get_object_or_404(Document, docalias__name=name) @@ -875,9 +880,6 @@ def document_bibxml_ref(request, name, rev=None): raise Http404() if not name.startswith('draft-'): name = 'draft-'+name - if rev != None and len(rev) != 2: - name = name+"-"+rev - rev = None return document_bibxml(request, name, rev=rev) def document_bibxml(request, name, rev=None): @@ -886,16 +888,21 @@ def document_bibxml(request, name, rev=None): if re.search(r'^rfc\d+$', name): raise Http404() - # If URL_REGEXPS put trailing digits in rev, they must be two digits + # Make sure URL_REGEXPS did not grab too much for the rev number if rev != None and len(rev) != 2: - name = name+"-"+rev - rev = None + mo = re.search(r"^(?P[0-9]{1,2})-(?P[0-9]{2})$", rev) + if mo: + name = name+"-"+mo.group(1) + rev = mo.group(2) + else: + name = name+"-"+rev + rev = None doc = get_object_or_404(Document, name=name, type_id='draft') latest_revision = doc.latest_event(NewRevisionDocEvent, type="new_revision") latest_rev = latest_revision.rev if latest_revision else None - + if rev != None: # find the entry in the history for h in doc.history_set.order_by("-time"): diff --git a/ietf/templates/doc/bibxml.xml b/ietf/templates/doc/bibxml.xml index 63ff25a98..afc7234a6 100644 --- a/ietf/templates/doc/bibxml.xml +++ b/ietf/templates/doc/bibxml.xml @@ -16,5 +16,5 @@ {% if doi %} - {% endif %} + {% endif %}