From 3b84ea66484d53e4ebed2605bf098483bfcffecc Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 12 Apr 2021 18:24:58 +0000 Subject: [PATCH] Merged in [18937] from rjsparks@nostrum.com: Change the default behavior of a document's main page to show the full document content. Users can still control whether the full page is shown on a particular document by adding either ?include_text=0 or ?include_text=1 to the url. Users can also use the settings page at /account/settings to override the default behavior for all documents. Fixes #3252. - Legacy-Id: 18946 Note: SVN reference [18937] has been migrated to Git commit 7cb5fdafbf149eb67161fc8297f70ba208f05fe9 --- ietf/cookies/tests.py | 21 +++++++++++++++++---- ietf/doc/tests.py | 14 ++++++++------ ietf/doc/views_doc.py | 8 +++++++- ietf/settings.py | 2 +- 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/ietf/cookies/tests.py b/ietf/cookies/tests.py index d23b64910..d4530774c 100644 --- a/ietf/cookies/tests.py +++ b/ietf/cookies/tests.py @@ -6,6 +6,7 @@ from pyquery import PyQuery from http.cookies import SimpleCookie from django.urls import reverse as urlreverse +from django.conf import settings import debug # pyflakes:ignore @@ -18,7 +19,10 @@ class CookieTests(TestCase): self.assertEqual(r.status_code, 200) self.assertListEqual([], list(r.cookies.keys())) q = PyQuery(r.content) - self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off']) + if settings.USER_PREFERENCE_DEFAULTS['full_draft'] == 'off': + self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off']) + else: + self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/on"]').contents(), ['On']) self.assertEqual(q('div a.active[href="/accounts/settings/new_enough/14"]').contents(), ['14 days']) self.assertEqual(q('div a.active[href="/accounts/settings/expires_soon/14"]').contents(), ['14 days']) self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/off"]').contents(), ['Off']) @@ -40,7 +44,10 @@ class CookieTests(TestCase): r = self.client.get(urlreverse("ietf.cookies.views.preferences")) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off']) + if settings.USER_PREFERENCE_DEFAULTS['full_draft'] == 'off': + self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off']) + else: + self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/on"]').contents(), ['On']) self.assertEqual(q('div a.active[href="/accounts/settings/new_enough/14"]').contents(), ['14 days']) self.assertEqual(q('div a.active[href="/accounts/settings/expires_soon/14"]').contents(), ['14 days']) self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/off"]').contents(), ['Off']) @@ -50,7 +57,10 @@ class CookieTests(TestCase): r = self.client.get(urlreverse("ietf.cookies.views.preferences")) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off']) + if settings.USER_PREFERENCE_DEFAULTS['full_draft'] == 'off': + self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off']) + else: + self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/on"]').contents(), ['On']) self.assertEqual(q('div a.active[href^="/accounts/settings/new_enough/"]').contents(), []) self.assertEqual(q('div a.active[href^="/accounts/settings/expires_soon/"]').contents(), []) self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/off"]').contents(), ['Off']) @@ -151,7 +161,10 @@ class CookieTests(TestCase): self.assertEqual(r.cookies[str('full_draft')].value, '') self.assertListEqual([str('full_draft')], list(r.cookies.keys())) q = PyQuery(r.content) - self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off']) + if settings.USER_PREFERENCE_DEFAULTS['full_draft'] == 'off': + self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off']) + else: + self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/on"]').contents(), ['On']) self.assertEqual(q('div a.active[href="/accounts/settings/new_enough/14"]').contents(), ['14 days']) self.assertEqual(q('div a.active[href="/accounts/settings/expires_soon/14"]').contents(), ['14 days']) # self.assertRegexpMatches(r.content, r'ietf-highlight-y.*full_draft.*off') diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index b5aeaf203..a8728ab0c 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -551,8 +551,9 @@ Man Expires September 22, 2015 [Page 3] r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name))) self.assertEqual(r.status_code, 200) self.assertContains(r, "Active Internet-Draft") - self.assertContains(r, "Show full document text") - self.assertNotContains(r, "Deimos street") + if settings.USER_PREFERENCE_DEFAULTS['full_draft'] == 'off': + self.assertContains(r, "Show full document text") + self.assertNotContains(r, "Deimos street") self.assertContains(r, replaced.canonical_name()) self.assertContains(r, replaced.title) # obs/updates not included until draft is RFC @@ -568,8 +569,8 @@ Man Expires September 22, 2015 [Page 3] r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name)) + "?include_text=0") self.assertEqual(r.status_code, 200) self.assertContains(r, "Active Internet-Draft") - self.assertNotContains(r, "Show full document text") - self.assertContains(r, "Deimos street") + self.assertContains(r, "Show full document text") + self.assertNotContains(r, "Deimos street") self.assertContains(r, replaced.canonical_name()) self.assertContains(r, replaced.title) # obs/updates not included until draft is RFC @@ -656,8 +657,9 @@ Man Expires September 22, 2015 [Page 3] r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name))) self.assertEqual(r.status_code, 200) self.assertContains(r, "Active Internet-Draft") - self.assertContains(r, "Show full document text") - self.assertNotContains(r, "Deimos street") + if settings.USER_PREFERENCE_DEFAULTS['full_draft'] == 'off': + self.assertContains(r, "Show full document text") + self.assertNotContains(r, "Deimos street") self.assertContains(r, replaced.canonical_name()) self.assertContains(r, replaced.title) # obs/updates not included until draft is RFC diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 7affa5f87..be858e16f 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -169,7 +169,13 @@ def document_main(request, name, rev=None): # specific document types if doc.type_id == "draft": - split_content = not ( request.GET.get('include_text') or request.COOKIES.get("full_draft", settings.USER_PREFERENCE_DEFAULTS["full_draft"]) == "on" ) + split_content = request.COOKIES.get("full_draft", settings.USER_PREFERENCE_DEFAULTS["full_draft"]) == "off" + if request.GET.get('include_text') == "0": + split_content = True + elif request.GET.get('include_text') == "1": + split_content = False + else: + pass iesg_state = doc.get_state("draft-iesg") if isinstance(doc, Document): diff --git a/ietf/settings.py b/ietf/settings.py index addf05dc1..847511c6f 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -1053,7 +1053,7 @@ POSTCONFIRM_PATH = "/a/postconfirm/wrapper" USER_PREFERENCE_DEFAULTS = { "expires_soon" : "14", "new_enough" : "14", - "full_draft" : "off", + "full_draft" : "on", "left_menu" : "off", }