Merged in [19833] from jennifer@painless-security.com:
Point to RFC editor info page in document_bibtex view. Fixes #3484.
- Legacy-Id: 19846
Note: SVN reference [19833] has been migrated to Git commit efa42e1558
This commit is contained in:
commit
4a89bab81d
|
@ -219,6 +219,11 @@ def rfclink(string):
|
||||||
string = str(string);
|
string = str(string);
|
||||||
return "https://datatracker.ietf.org/doc/html/rfc" + string;
|
return "https://datatracker.ietf.org/doc/html/rfc" + string;
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def rfceditor_info_url(rfcnum : str):
|
||||||
|
"""Link to the RFC editor info page for an RFC"""
|
||||||
|
return urljoin(settings.RFC_EDITOR_INFO_BASE_URL, f'rfc{rfcnum}')
|
||||||
|
|
||||||
@register.filter(name='urlize_ietf_docs', is_safe=True, needs_autoescape=True)
|
@register.filter(name='urlize_ietf_docs', is_safe=True, needs_autoescape=True)
|
||||||
def urlize_ietf_docs(string, autoescape=None):
|
def urlize_ietf_docs(string, autoescape=None):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -22,6 +22,7 @@ from django.urls import reverse as urlreverse
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.forms import Form
|
from django.forms import Form
|
||||||
from django.utils.html import escape
|
from django.utils.html import escape
|
||||||
|
from django.test import override_settings
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
|
|
||||||
from tastypie.test import ResourceTestCaseMixin
|
from tastypie.test import ResourceTestCaseMixin
|
||||||
|
@ -1773,6 +1774,12 @@ class DocTestCase(TestCase):
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
self.assertNotContains(r, "Request publication")
|
self.assertNotContains(r, "Request publication")
|
||||||
|
|
||||||
|
def _parse_bibtex_response(self, response) -> dict:
|
||||||
|
parser = bibtexparser.bparser.BibTexParser()
|
||||||
|
parser.homogenise_fields = False # do not modify field names (e.g., turns "url" into "link" by default)
|
||||||
|
return bibtexparser.loads(response.content.decode(), parser=parser).get_entry_dict()
|
||||||
|
|
||||||
|
@override_settings(RFC_EDITOR_INFO_BASE_URL='https://www.rfc-editor.ietf.org/info/')
|
||||||
def test_document_bibtex(self):
|
def test_document_bibtex(self):
|
||||||
rfc = WgRfcFactory.create(
|
rfc = WgRfcFactory.create(
|
||||||
#other_aliases = ['rfc6020',],
|
#other_aliases = ['rfc6020',],
|
||||||
|
@ -1785,12 +1792,13 @@ class DocTestCase(TestCase):
|
||||||
#
|
#
|
||||||
url = urlreverse('ietf.doc.views_doc.document_bibtex', kwargs=dict(name=rfc.name))
|
url = urlreverse('ietf.doc.views_doc.document_bibtex', kwargs=dict(name=rfc.name))
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
entry = bibtexparser.loads(unicontent(r)).get_entry_dict()["rfc%s"%num]
|
entry = self._parse_bibtex_response(r)["rfc%s"%num]
|
||||||
self.assertEqual(entry['series'], 'Request for Comments')
|
self.assertEqual(entry['series'], 'Request for Comments')
|
||||||
self.assertEqual(entry['number'], num)
|
self.assertEqual(entry['number'], num)
|
||||||
self.assertEqual(entry['doi'], '10.17487/RFC%s'%num)
|
self.assertEqual(entry['doi'], '10.17487/RFC%s'%num)
|
||||||
self.assertEqual(entry['year'], '2010')
|
self.assertEqual(entry['year'], '2010')
|
||||||
self.assertEqual(entry['month'], 'oct')
|
self.assertEqual(entry['month'], 'oct')
|
||||||
|
self.assertEqual(entry['url'], f'https://www.rfc-editor.ietf.org/info/rfc{num}')
|
||||||
#
|
#
|
||||||
self.assertNotIn('day', entry)
|
self.assertNotIn('day', entry)
|
||||||
|
|
||||||
|
@ -1806,25 +1814,27 @@ class DocTestCase(TestCase):
|
||||||
url = urlreverse('ietf.doc.views_doc.document_bibtex', kwargs=dict(name=april1.name))
|
url = urlreverse('ietf.doc.views_doc.document_bibtex', kwargs=dict(name=april1.name))
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.get('Content-Type'), 'text/plain; charset=utf-8')
|
self.assertEqual(r.get('Content-Type'), 'text/plain; charset=utf-8')
|
||||||
entry = bibtexparser.loads(unicontent(r)).get_entry_dict()['rfc%s'%num]
|
entry = self._parse_bibtex_response(r)["rfc%s"%num]
|
||||||
self.assertEqual(entry['series'], 'Request for Comments')
|
self.assertEqual(entry['series'], 'Request for Comments')
|
||||||
self.assertEqual(entry['number'], num)
|
self.assertEqual(entry['number'], num)
|
||||||
self.assertEqual(entry['doi'], '10.17487/RFC%s'%num)
|
self.assertEqual(entry['doi'], '10.17487/RFC%s'%num)
|
||||||
self.assertEqual(entry['year'], '1990')
|
self.assertEqual(entry['year'], '1990')
|
||||||
self.assertEqual(entry['month'], 'apr')
|
self.assertEqual(entry['month'], 'apr')
|
||||||
self.assertEqual(entry['day'], '1')
|
self.assertEqual(entry['day'], '1')
|
||||||
|
self.assertEqual(entry['url'], f'https://www.rfc-editor.ietf.org/info/rfc{num}')
|
||||||
|
|
||||||
draft = IndividualDraftFactory.create()
|
draft = IndividualDraftFactory.create()
|
||||||
docname = '%s-%s' % (draft.name, draft.rev)
|
docname = '%s-%s' % (draft.name, draft.rev)
|
||||||
bibname = docname[6:] # drop the 'draft-' prefix
|
bibname = docname[6:] # drop the 'draft-' prefix
|
||||||
url = urlreverse('ietf.doc.views_doc.document_bibtex', kwargs=dict(name=draft.name))
|
url = urlreverse('ietf.doc.views_doc.document_bibtex', kwargs=dict(name=draft.name))
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
entry = bibtexparser.loads(unicontent(r)).get_entry_dict()[bibname]
|
entry = self._parse_bibtex_response(r)[bibname]
|
||||||
self.assertEqual(entry['note'], 'Work in Progress')
|
self.assertEqual(entry['note'], 'Work in Progress')
|
||||||
self.assertEqual(entry['number'], docname)
|
self.assertEqual(entry['number'], docname)
|
||||||
self.assertEqual(entry['year'], str(draft.pub_date().year))
|
self.assertEqual(entry['year'], str(draft.pub_date().year))
|
||||||
self.assertEqual(entry['month'], draft.pub_date().strftime('%b').lower())
|
self.assertEqual(entry['month'], draft.pub_date().strftime('%b').lower())
|
||||||
self.assertEqual(entry['day'], str(draft.pub_date().day))
|
self.assertEqual(entry['day'], str(draft.pub_date().day))
|
||||||
|
self.assertEqual(entry['url'], f'https://datatracker.ietf.org/doc/html/{docname}')
|
||||||
#
|
#
|
||||||
self.assertNotIn('doi', entry)
|
self.assertNotIn('doi', entry)
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
howpublished = {% templatetag openbrace %}RFC {{ doc.rfc_number }}{% if doc.doc.intended_std_level %} ({{ doc.intended_std_level }}){% endif %}{% templatetag closebrace %},
|
howpublished = {% templatetag openbrace %}RFC {{ doc.rfc_number }}{% if doc.doc.intended_std_level %} ({{ doc.intended_std_level }}){% endif %}{% templatetag closebrace %},
|
||||||
publisher = {RFC Editor},
|
publisher = {RFC Editor},
|
||||||
doi = {% templatetag openbrace %}{{ doi }}{% templatetag closebrace %},
|
doi = {% templatetag openbrace %}{{ doi }}{% templatetag closebrace %},
|
||||||
url = {https://rfc-editor.org/rfc/rfc{{ doc.rfc_number }}.txt},{% else %}
|
url = {% templatetag openbrace %}{{ doc.rfc_number|rfceditor_info_url }}{% templatetag closebrace %},{% else %}
|
||||||
{% if published %}%% You should probably cite rfc{{ latest_revision.doc.rfc_number }} instead of this I-D.{% else %}{% if replaced_by %}%% You should probably cite {{replaced_by|join:" or "}} instead of this I-D.{% else %}
|
{% if published %}%% You should probably cite rfc{{ latest_revision.doc.rfc_number }} instead of this I-D.{% else %}{% if replaced_by %}%% You should probably cite {{replaced_by|join:" or "}} instead of this I-D.{% else %}
|
||||||
{% if doc.rev != latest_revision.rev %}%% You should probably cite {{latest_revision.doc.name}}-{{latest_revision.rev}} instead of this revision.{%endif%}{% endif %}{% endif %}
|
{% if doc.rev != latest_revision.rev %}%% You should probably cite {{latest_revision.doc.name}}-{{latest_revision.rev}} instead of this revision.{%endif%}{% endif %}{% endif %}
|
||||||
@techreport{% templatetag openbrace %}{{doc.name|slice:"6:"}}-{{doc.rev}},
|
@techreport{% templatetag openbrace %}{{doc.name|slice:"6:"}}-{{doc.rev}},
|
||||||
|
|
Loading…
Reference in a new issue