Skip to content

Commit 5cf2cac

Browse files
committed
Added support for bibxml3 entries using the traditional reference entry name (with 'reference.I-D....'), instead of just the plain draft name.
- Legacy-Id: 17106
1 parent 2bc5606 commit 5cf2cac

3 files changed

Lines changed: 24 additions & 15 deletions

File tree

ietf/doc/tests.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -976,20 +976,20 @@ def test_document_bibtex(self):
976976
self.assertNotIn('doi', entry)
977977

978978
def test_document_bibxml(self):
979-
980979
draft = IndividualDraftFactory.create()
981980
docname = '%s-%s' % (draft.name, draft.rev)
982-
url = urlreverse('ietf.doc.views_doc.document_bibxml', kwargs=dict(name=draft.name))
983-
r = self.client.get(url)
984-
entry = lxml.etree.fromstring(r.content)
985-
self.assertEqual(entry.find('./front/title').text, draft.title)
986-
date = entry.find('./front/date')
987-
self.assertEqual(date.get('year'), str(draft.pub_date().year))
988-
self.assertEqual(date.get('month'), draft.pub_date().strftime('%B'))
989-
self.assertEqual(date.get('day'), str(draft.pub_date().day))
990-
self.assertEqual(normalize_text(entry.find('./front/abstract/t').text), normalize_text(draft.abstract))
991-
self.assertEqual(entry.find('./seriesInfo').get('value'), docname)
992-
self.assertEqual(entry.find('./seriesInfo[@name="DOI"]'), None)
981+
for viewname in [ 'ietf.doc.views_doc.document_bibxml', 'ietf.doc.views_doc.document_bibxml_ref' ]:
982+
url = urlreverse(viewname, kwargs=dict(name=draft.name))
983+
r = self.client.get(url)
984+
entry = lxml.etree.fromstring(r.content)
985+
self.assertEqual(entry.find('./front/title').text, draft.title)
986+
date = entry.find('./front/date')
987+
self.assertEqual(date.get('year'), str(draft.pub_date().year))
988+
self.assertEqual(date.get('month'), draft.pub_date().strftime('%B'))
989+
self.assertEqual(date.get('day'), str(draft.pub_date().day))
990+
self.assertEqual(normalize_text(entry.find('./front/abstract/t').text), normalize_text(draft.abstract))
991+
self.assertEqual(entry.find('./seriesInfo').get('value'), docname)
992+
self.assertEqual(entry.find('./seriesInfo[@name="DOI"]'), None)
993993

994994
class AddCommentTestCase(TestCase):
995995
def test_add_comment(self):

ietf/doc/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474

7575
url(r'^%(name)s(?:/%(rev)s)?/$' % settings.URL_REGEXPS, views_doc.document_main),
7676
url(r'^%(name)s(?:/%(rev)s)?/bibtex/$' % settings.URL_REGEXPS, views_doc.document_bibtex),
77+
url(r'^bibxml3/reference.I-D.%(name)s(?:-%(rev)s)?.xml$' % settings.URL_REGEXPS, views_doc.document_bibxml_ref),
7778
url(r'^bibxml3/%(name)s(?:-%(rev)s)?.xml$' % settings.URL_REGEXPS, views_doc.document_bibxml),
7879
url(r'^%(name)s/history/$' % settings.URL_REGEXPS, views_doc.document_history),
7980
url(r'^%(name)s/writeup/$' % settings.URL_REGEXPS, views_doc.document_writeup),

ietf/doc/views_doc.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -827,16 +827,24 @@ def document_bibtex(request, name, rev=None):
827827
content_type="text/plain; charset=utf-8",
828828
)
829829

830-
830+
def document_bibxml_ref(request, name, rev=None):
831+
if re.search(r'^rfc\d+$', name):
832+
raise Http404()
833+
if not name.startswith('draft-'):
834+
name = 'draft-'+name
835+
return document_bibxml(request, name, rev=rev)
836+
831837
def document_bibxml(request, name, rev=None):
832838
# This only deals with drafts, as bibxml entries for RFCs should come from
833839
# the RFC-Editor.
834-
doc = get_object_or_404(Document, docalias__name=name, name__startswith='draft-', type_id='draft')
840+
if re.search(r'^rfc\d+$', name):
841+
raise Http404()
842+
doc = get_object_or_404(Document, name=name, type_id='draft')
835843

836844
latest_revision = doc.latest_event(NewRevisionDocEvent, type="new_revision")
837845
latest_rev = latest_revision.rev if latest_revision else None
838846

839-
if rev != None and rev != doc.rev:
847+
if rev != None:
840848
# find the entry in the history
841849
for h in doc.history_set.order_by("-time"):
842850
if rev == h.rev:

0 commit comments

Comments
 (0)