Merged in [18701] from jennifer@painless-security.com:

Improve group 'about' link text on doc page. Fixes #3066.
 - Legacy-Id: 18704
Note: SVN reference [18701] has been migrated to Git commit cde31ce72f
This commit is contained in:
Henrik Levkowetz 2020-11-17 06:44:47 +00:00
commit 7b02847149
2 changed files with 60 additions and 6 deletions

View file

@ -752,6 +752,61 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name="draft-xyz123")))
self.assertEqual(r.status_code, 404)
def assert_correct_wg_group_link(self, r, group):
"""Assert correct format for WG-like group types"""
self.assertContains(
r,
'(<a href="%(about_url)s">%(group_acro)s %(group_type)s</a>)' % {
"group_acro": group.acronym,
"group_type": group.type,
"about_url": group.about_url(),
},
msg_prefix='WG-like group %s (%s) should include group type in link' % (group.acronym, group.type),
)
def assert_correct_non_wg_group_link(self, r, group):
"""Assert correct format for non-WG-like group types"""
self.assertContains(
r,
'(<a href="%(about_url)s">%(group_acro)s</a>)' % {
"group_acro": group.acronym,
"about_url": group.about_url(),
},
msg_prefix='Non-WG-like group %s (%s) should not include group type in link' % (group.acronym, group.type),
)
def test_draft_group_link(self):
"""Link to group 'about' page should have correct format"""
for group_type_id in ['wg', 'rg', 'ag']:
group = GroupFactory(type_id=group_type_id)
draft = WgDraftFactory(name='draft-document-%s' % group_type_id, group=group)
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200)
self.assert_correct_wg_group_link(r, group)
rfc = WgRfcFactory(name='draft-rfc-document-%s' % group_type_id, group=group)
DocEventFactory.create(doc=rfc, type='published_rfc', time = '2010-10-10')
# get the rfc name to avoid a redirect
rfc_name = rfc.docalias.filter(name__startswith='rfc').first().name
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=rfc_name)))
self.assertEqual(r.status_code, 200)
self.assert_correct_wg_group_link(r, group)
for group_type_id in ['ietf', 'team']:
group = GroupFactory(type_id=group_type_id)
draft = WgDraftFactory(name='draft-document-%s' % group_type_id, group=group)
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200)
self.assert_correct_non_wg_group_link(r, group)
rfc = WgRfcFactory(name='draft-rfc-document-%s' % group_type_id, group=group)
DocEventFactory.create(doc=rfc, type='published_rfc', time = '2010-10-10')
# get the rfc name to avoid a redirect
rfc_name = rfc.docalias.filter(name__startswith='rfc').first().name
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=rfc_name)))
self.assertEqual(r.status_code, 200)
self.assert_correct_non_wg_group_link(r, group)
def test_document_primary_and_history_views(self):
IndividualDraftFactory(name='draft-imaginary-independent-submission')
ConflictReviewFactory(name='conflict-review-imaginary-irtf-submission')

View file

@ -47,7 +47,6 @@ from django.http import HttpResponse, Http404
from django.shortcuts import render, get_object_or_404, redirect
from django.template.loader import render_to_string
from django.urls import reverse as urlreverse
from django.urls.exceptions import NoReverseMatch
from django.conf import settings
from django import forms
@ -296,11 +295,11 @@ def document_main(request, name, rev=None):
elif group.type_id == "area" and doc.stream_id == "ietf":
submission = "individual in %s area" % group.acronym
else:
submission = "%s %s" % (group.acronym, group.type)
try:
submission = "<a href=\"%s\">%s</a>" % (urlreverse("ietf.group.views.group_home", kwargs=dict(group_type=group.type_id, acronym=group.acronym)), submission)
except NoReverseMatch:
pass
if group.features.acts_like_wg:
submission = "%s %s" % (group.acronym, group.type)
else:
submission = group.acronym
submission = "<a href=\"%s\">%s</a>" % (group.about_url(), submission)
if doc.stream_id and doc.get_state_slug("draft-stream-%s" % doc.stream_id) == "c-adopt":
submission = "candidate for %s" % submission