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
This commit is contained in:
Robert Sparks 2021-04-12 18:24:58 +00:00
parent 404d115934
commit 3b84ea6648
4 changed files with 33 additions and 12 deletions

View file

@ -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')

View file

@ -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

View file

@ -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):

View file

@ -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",
}