From cde31ce72ff2104b734a2e723164ceb5b9155188 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 16 Nov 2020 18:11:05 +0000 Subject: [PATCH] Improve group 'about' link text on doc page. Fixes #3066. Commit ready for merge. - Legacy-Id: 18701 --- ietf/doc/tests.py | 55 +++++++++++++++++++++++++++++++++++++++++++ ietf/doc/views_doc.py | 11 ++++----- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index 82f2cbfd7..ec6546618 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -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, + '(%(group_acro)s %(group_type)s)' % { + "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, + '(%(group_acro)s)' % { + "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') diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 2448bce6a..3a32a5f19 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -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 = "%s" % (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 = "%s" % (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