Skip to content

Commit cde31ce

Browse files
Improve group 'about' link text on doc page. Fixes ietf-tools#3066. Commit ready for merge.
- Legacy-Id: 18701
1 parent 0bf56c9 commit cde31ce

2 files changed

Lines changed: 60 additions & 6 deletions

File tree

ietf/doc/tests.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,61 @@ def test_document_draft(self):
752752
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name="draft-xyz123")))
753753
self.assertEqual(r.status_code, 404)
754754

755+
def assert_correct_wg_group_link(self, r, group):
756+
"""Assert correct format for WG-like group types"""
757+
self.assertContains(
758+
r,
759+
'(<a href="%(about_url)s">%(group_acro)s %(group_type)s</a>)' % {
760+
"group_acro": group.acronym,
761+
"group_type": group.type,
762+
"about_url": group.about_url(),
763+
},
764+
msg_prefix='WG-like group %s (%s) should include group type in link' % (group.acronym, group.type),
765+
)
766+
767+
def assert_correct_non_wg_group_link(self, r, group):
768+
"""Assert correct format for non-WG-like group types"""
769+
self.assertContains(
770+
r,
771+
'(<a href="%(about_url)s">%(group_acro)s</a>)' % {
772+
"group_acro": group.acronym,
773+
"about_url": group.about_url(),
774+
},
775+
msg_prefix='Non-WG-like group %s (%s) should not include group type in link' % (group.acronym, group.type),
776+
)
777+
778+
def test_draft_group_link(self):
779+
"""Link to group 'about' page should have correct format"""
780+
for group_type_id in ['wg', 'rg', 'ag']:
781+
group = GroupFactory(type_id=group_type_id)
782+
draft = WgDraftFactory(name='draft-document-%s' % group_type_id, group=group)
783+
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name)))
784+
self.assertEqual(r.status_code, 200)
785+
self.assert_correct_wg_group_link(r, group)
786+
787+
rfc = WgRfcFactory(name='draft-rfc-document-%s' % group_type_id, group=group)
788+
DocEventFactory.create(doc=rfc, type='published_rfc', time = '2010-10-10')
789+
# get the rfc name to avoid a redirect
790+
rfc_name = rfc.docalias.filter(name__startswith='rfc').first().name
791+
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=rfc_name)))
792+
self.assertEqual(r.status_code, 200)
793+
self.assert_correct_wg_group_link(r, group)
794+
795+
for group_type_id in ['ietf', 'team']:
796+
group = GroupFactory(type_id=group_type_id)
797+
draft = WgDraftFactory(name='draft-document-%s' % group_type_id, group=group)
798+
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name)))
799+
self.assertEqual(r.status_code, 200)
800+
self.assert_correct_non_wg_group_link(r, group)
801+
802+
rfc = WgRfcFactory(name='draft-rfc-document-%s' % group_type_id, group=group)
803+
DocEventFactory.create(doc=rfc, type='published_rfc', time = '2010-10-10')
804+
# get the rfc name to avoid a redirect
805+
rfc_name = rfc.docalias.filter(name__startswith='rfc').first().name
806+
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=rfc_name)))
807+
self.assertEqual(r.status_code, 200)
808+
self.assert_correct_non_wg_group_link(r, group)
809+
755810
def test_document_primary_and_history_views(self):
756811
IndividualDraftFactory(name='draft-imaginary-independent-submission')
757812
ConflictReviewFactory(name='conflict-review-imaginary-irtf-submission')

ietf/doc/views_doc.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
from django.shortcuts import render, get_object_or_404, redirect
4848
from django.template.loader import render_to_string
4949
from django.urls import reverse as urlreverse
50-
from django.urls.exceptions import NoReverseMatch
5150
from django.conf import settings
5251
from django import forms
5352

@@ -296,11 +295,11 @@ def document_main(request, name, rev=None):
296295
elif group.type_id == "area" and doc.stream_id == "ietf":
297296
submission = "individual in %s area" % group.acronym
298297
else:
299-
submission = "%s %s" % (group.acronym, group.type)
300-
try:
301-
submission = "<a href=\"%s\">%s</a>" % (urlreverse("ietf.group.views.group_home", kwargs=dict(group_type=group.type_id, acronym=group.acronym)), submission)
302-
except NoReverseMatch:
303-
pass
298+
if group.features.acts_like_wg:
299+
submission = "%s %s" % (group.acronym, group.type)
300+
else:
301+
submission = group.acronym
302+
submission = "<a href=\"%s\">%s</a>" % (group.about_url(), submission)
304303
if doc.stream_id and doc.get_state_slug("draft-stream-%s" % doc.stream_id) == "c-adopt":
305304
submission = "candidate for %s" % submission
306305

0 commit comments

Comments
 (0)