@@ -832,10 +832,15 @@ def document_history(request, name):
832832
833833
834834def document_bibtex (request , name , rev = None ):
835- # If URL_REGEXPS put trailing digits in rev, they must be two digits
835+ # Make sure URL_REGEXPS did not grab too much for the rev number
836836 if rev != None and len (rev ) != 2 :
837- name = name + "-" + rev
838- rev = None
837+ mo = re .search (r"^(?P<m>[0-9]{1,2})-(?P<n>[0-9]{2})$" , rev )
838+ if mo :
839+ name = name + "-" + mo .group (1 )
840+ rev = mo .group (2 )
841+ else :
842+ name = name + "-" + rev
843+ rev = None
839844
840845 doc = get_object_or_404 (Document , docalias__name = name )
841846
@@ -875,9 +880,6 @@ def document_bibxml_ref(request, name, rev=None):
875880 raise Http404 ()
876881 if not name .startswith ('draft-' ):
877882 name = 'draft-' + name
878- if rev != None and len (rev ) != 2 :
879- name = name + "-" + rev
880- rev = None
881883 return document_bibxml (request , name , rev = rev )
882884
883885def document_bibxml (request , name , rev = None ):
@@ -886,16 +888,21 @@ def document_bibxml(request, name, rev=None):
886888 if re .search (r'^rfc\d+$' , name ):
887889 raise Http404 ()
888890
889- # If URL_REGEXPS put trailing digits in rev, they must be two digits
891+ # Make sure URL_REGEXPS did not grab too much for the rev number
890892 if rev != None and len (rev ) != 2 :
891- name = name + "-" + rev
892- rev = None
893+ mo = re .search (r"^(?P<m>[0-9]{1,2})-(?P<n>[0-9]{2})$" , rev )
894+ if mo :
895+ name = name + "-" + mo .group (1 )
896+ rev = mo .group (2 )
897+ else :
898+ name = name + "-" + rev
899+ rev = None
893900
894901 doc = get_object_or_404 (Document , name = name , type_id = 'draft' )
895902
896903 latest_revision = doc .latest_event (NewRevisionDocEvent , type = "new_revision" )
897904 latest_rev = latest_revision .rev if latest_revision else None
898-
905+
899906 if rev != None :
900907 # find the entry in the history
901908 for h in doc .history_set .order_by ("-time" ):
0 commit comments