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
This commit is contained in:
parent
2bc5606986
commit
5cf2cac8d0
|
@ -976,20 +976,20 @@ class DocTestCase(TestCase):
|
|||
self.assertNotIn('doi', entry)
|
||||
|
||||
def test_document_bibxml(self):
|
||||
|
||||
draft = IndividualDraftFactory.create()
|
||||
docname = '%s-%s' % (draft.name, draft.rev)
|
||||
url = urlreverse('ietf.doc.views_doc.document_bibxml', kwargs=dict(name=draft.name))
|
||||
r = self.client.get(url)
|
||||
entry = lxml.etree.fromstring(r.content)
|
||||
self.assertEqual(entry.find('./front/title').text, draft.title)
|
||||
date = entry.find('./front/date')
|
||||
self.assertEqual(date.get('year'), str(draft.pub_date().year))
|
||||
self.assertEqual(date.get('month'), draft.pub_date().strftime('%B'))
|
||||
self.assertEqual(date.get('day'), str(draft.pub_date().day))
|
||||
self.assertEqual(normalize_text(entry.find('./front/abstract/t').text), normalize_text(draft.abstract))
|
||||
self.assertEqual(entry.find('./seriesInfo').get('value'), docname)
|
||||
self.assertEqual(entry.find('./seriesInfo[@name="DOI"]'), None)
|
||||
for viewname in [ 'ietf.doc.views_doc.document_bibxml', 'ietf.doc.views_doc.document_bibxml_ref' ]:
|
||||
url = urlreverse(viewname, kwargs=dict(name=draft.name))
|
||||
r = self.client.get(url)
|
||||
entry = lxml.etree.fromstring(r.content)
|
||||
self.assertEqual(entry.find('./front/title').text, draft.title)
|
||||
date = entry.find('./front/date')
|
||||
self.assertEqual(date.get('year'), str(draft.pub_date().year))
|
||||
self.assertEqual(date.get('month'), draft.pub_date().strftime('%B'))
|
||||
self.assertEqual(date.get('day'), str(draft.pub_date().day))
|
||||
self.assertEqual(normalize_text(entry.find('./front/abstract/t').text), normalize_text(draft.abstract))
|
||||
self.assertEqual(entry.find('./seriesInfo').get('value'), docname)
|
||||
self.assertEqual(entry.find('./seriesInfo[@name="DOI"]'), None)
|
||||
|
||||
class AddCommentTestCase(TestCase):
|
||||
def test_add_comment(self):
|
||||
|
|
|
@ -74,6 +74,7 @@ urlpatterns = [
|
|||
|
||||
url(r'^%(name)s(?:/%(rev)s)?/$' % settings.URL_REGEXPS, views_doc.document_main),
|
||||
url(r'^%(name)s(?:/%(rev)s)?/bibtex/$' % settings.URL_REGEXPS, views_doc.document_bibtex),
|
||||
url(r'^bibxml3/reference.I-D.%(name)s(?:-%(rev)s)?.xml$' % settings.URL_REGEXPS, views_doc.document_bibxml_ref),
|
||||
url(r'^bibxml3/%(name)s(?:-%(rev)s)?.xml$' % settings.URL_REGEXPS, views_doc.document_bibxml),
|
||||
url(r'^%(name)s/history/$' % settings.URL_REGEXPS, views_doc.document_history),
|
||||
url(r'^%(name)s/writeup/$' % settings.URL_REGEXPS, views_doc.document_writeup),
|
||||
|
|
|
@ -827,16 +827,24 @@ def document_bibtex(request, name, rev=None):
|
|||
content_type="text/plain; charset=utf-8",
|
||||
)
|
||||
|
||||
|
||||
def document_bibxml_ref(request, name, rev=None):
|
||||
if re.search(r'^rfc\d+$', name):
|
||||
raise Http404()
|
||||
if not name.startswith('draft-'):
|
||||
name = 'draft-'+name
|
||||
return document_bibxml(request, name, rev=rev)
|
||||
|
||||
def document_bibxml(request, name, rev=None):
|
||||
# This only deals with drafts, as bibxml entries for RFCs should come from
|
||||
# the RFC-Editor.
|
||||
doc = get_object_or_404(Document, docalias__name=name, name__startswith='draft-', type_id='draft')
|
||||
if re.search(r'^rfc\d+$', name):
|
||||
raise Http404()
|
||||
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 and rev != doc.rev:
|
||||
if rev != None:
|
||||
# find the entry in the history
|
||||
for h in doc.history_set.order_by("-time"):
|
||||
if rev == h.rev:
|
||||
|
|
Loading…
Reference in a new issue