Added preference editing support for the left_menu preference setting, and refactored the preference handling code substantially. Related to issues #1659 and #1663.

- Legacy-Id: 9673
This commit is contained in:
Henrik Levkowetz 2015-06-22 18:47:28 +00:00
parent 9067f88fa7
commit f70b2d93c5
8 changed files with 167 additions and 134 deletions

View file

@ -12,46 +12,50 @@ from ietf.utils.test_utils import TestCase
class CookieTests(TestCase):
def test_settings_defaults(self):
make_test_data()
r = self.client.get(urlreverse("ietf.cookies.views.settings"))
r = self.client.get(urlreverse("ietf.cookies.views.preferences"))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
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/on"]').contents(), ['On'])
def test_settings_defaults_from_cookies(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '7', 'expires_soon' : 7})
r = self.client.get(urlreverse("ietf.cookies.views.settings"))
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '7', 'expires_soon' : 7, 'left_menu': 'on', })
r = self.client.get(urlreverse("ietf.cookies.views.preferences"))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
self.assertEqual(q('div a.active[href="/accounts/settings/new_enough/7"]').contents(), ['7 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/expires_soon/7"]').contents(), ['7 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
self.assertEqual(q('div a.active[href="/accounts/settings/new_enough/7"]').contents(), ['7 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/expires_soon/7"]').contents(), ['7 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/on"]').contents(), ['On'])
def test_settings_values_from_cookies_garbage(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'foo', 'new_enough' : 'foo', 'expires_soon' : 'foo'})
r = self.client.get(urlreverse("ietf.cookies.views.settings"))
self.client.cookies = SimpleCookie({'full_draft': 'foo', 'new_enough' : 'foo', 'expires_soon' : 'foo', 'left_menu': 'foo', })
r = self.client.get(urlreverse("ietf.cookies.views.preferences"))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
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/on"]').contents(), ['On'])
def test_settings_values_from_cookies_random(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'zappa', 'new_enough' : '365', 'expires_soon' : '5'})
r = self.client.get(urlreverse("ietf.cookies.views.settings"))
self.client.cookies = SimpleCookie({'full_draft': 'zappa', 'new_enough' : '365', 'expires_soon' : '5', 'left_menu': 'zappa', })
r = self.client.get(urlreverse("ietf.cookies.views.preferences"))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
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/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/on"]').contents(), ['On'])
#
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*full_draft.*off')
# self.assertNotRegexpMatches(r.content, r'ietf-highlight-y.*new_enough')
@ -59,85 +63,90 @@ class CookieTests(TestCase):
def test_settings_values_from_cookies_1(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'on', 'new_enough' : '90', 'expires_soon' : 7})
r = self.client.get(urlreverse("ietf.cookies.views.settings"))
self.client.cookies = SimpleCookie({'full_draft': 'on', 'new_enough' : '90', 'expires_soon' : 7, 'left_menu': 'off', })
r = self.client.get(urlreverse("ietf.cookies.views.preferences"))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
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/90"]').contents(), ['90 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/expires_soon/7"]').contents(), ['7 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/off"]').contents(), ['Off'])
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*full_draft.*on')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*new_enough.*90 days')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*expires_soon.*7 days')
def test_settings_values_from_cookies_2(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '60', 'expires_soon' : 14})
r = self.client.get(urlreverse("ietf.cookies.views.settings"))
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '60', 'expires_soon' : 14, 'left_menu': 'on', })
r = self.client.get(urlreverse("ietf.cookies.views.preferences"))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
self.assertEqual(q('div a.active[href="/accounts/settings/new_enough/60"]').contents(), ['60 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/on"]').contents(), ['On'])
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*full_draft.*off')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*new_enough.*60 days')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*expires_soon.*14 days')
def test_settings_values_from_cookies_3(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'on', 'new_enough' : '30', 'expires_soon' : 21})
r = self.client.get(urlreverse("ietf.cookies.views.settings"))
self.client.cookies = SimpleCookie({'full_draft': 'on', 'new_enough' : '30', 'expires_soon' : 21, 'left_menu': 'off'})
r = self.client.get(urlreverse("ietf.cookies.views.preferences"))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
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/30"]').contents(), ['30 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/expires_soon/21"]').contents(), ['21 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/off"]').contents(), ['Off'])
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*full_draft.*on')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*new_enough.*30 days')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*expires_soon.*21 days')
def test_settings_values_from_cookies_4(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '21', 'expires_soon' : 30})
r = self.client.get(urlreverse("ietf.cookies.views.settings"))
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '21', 'expires_soon' : 30, 'left_menu': 'on', })
r = self.client.get(urlreverse("ietf.cookies.views.preferences"))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
self.assertEqual(q('div a.active[href="/accounts/settings/new_enough/21"]').contents(), ['21 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/expires_soon/30"]').contents(), ['30 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/on"]').contents(), ['On'])
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*full_draft.*off')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*new_enough.*21 days')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*expires_soon.*30 days')
def test_settings_values_from_cookies_5(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'on', 'new_enough' : '14', 'expires_soon' : 60})
r = self.client.get(urlreverse("ietf.cookies.views.settings"))
self.client.cookies = SimpleCookie({'full_draft': 'on', 'new_enough' : '14', 'expires_soon' : 60, 'left_menu': 'off', })
r = self.client.get(urlreverse("ietf.cookies.views.preferences"))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
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/60"]').contents(), ['60 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/off"]').contents(), ['Off'])
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*full_draft.*on')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*new_enough.*14 days')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*expires_soon.*60 days')
def test_settings_values_from_cookies_6(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '7', 'expires_soon' : 90})
r = self.client.get(urlreverse("ietf.cookies.views.settings"))
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '7', 'expires_soon' : 90, 'left_menu': 'on', })
r = self.client.get(urlreverse("ietf.cookies.views.preferences"))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
self.assertEqual(q('div a.active[href="/accounts/settings/new_enough/7"]').contents(), ['7 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/expires_soon/90"]').contents(), ['90 days'])
self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/on"]').contents(), ['On'])
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*full_draft.*off')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*new_enough.*7 days')
# self.assertRegexpMatches(r.content, r'ietf-highlight-y.*expires_soon.*90 days')
@ -145,9 +154,9 @@ class CookieTests(TestCase):
def test_full_draft(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '14', 'expires_soon' : 14})
r = self.client.get(urlreverse("ietf.cookies.views.full_draft"))
r = self.client.get(urlreverse("ietf.cookies.views.full_draft")) # no value: reset
self.assertEqual(r.status_code, 200)
self.assertEqual(r.cookies['full_draft'].value, 'off')
self.assertEqual(r.cookies['full_draft'].value, '')
self.assertListEqual(['full_draft'], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
@ -186,20 +195,61 @@ class CookieTests(TestCase):
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '14', 'expires_soon' : 14})
r = self.client.get(urlreverse("ietf.cookies.views.full_draft", kwargs=dict(enabled="foo")))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.cookies['full_draft'].value, 'off')
self.assertListEqual(['full_draft'], r.cookies.keys())
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
# 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')
def test_left_menu(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '14', 'expires_soon' : 14, 'left_menu': 'off', })
r = self.client.get(urlreverse("ietf.cookies.views.left_menu")) # no value: reset
self.assertEqual(r.status_code, 200)
self.assertEqual(r.cookies['left_menu'].value, '')
self.assertListEqual(['left_menu'], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/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'])
def test_left_menu_on(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '14', 'expires_soon' : 14, 'left_menu': 'off', })
r = self.client.get(urlreverse("ietf.cookies.views.left_menu", kwargs=dict(enabled="on")))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.cookies['left_menu'].value, 'on')
self.assertListEqual(['left_menu'], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/on"]').contents(), ['On'])
def test_left_menu_off(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '14', 'expires_soon' : 14, 'left_menu': 'off', })
r = self.client.get(urlreverse("ietf.cookies.views.left_menu", kwargs=dict(enabled="off")))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.cookies['left_menu'].value, 'off')
self.assertListEqual(['left_menu'], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/off"]').contents(), ['Off'])
def test_left_menu_foo(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '14', 'expires_soon' : 14, 'left_menu': 'off', })
r = self.client.get(urlreverse("ietf.cookies.views.left_menu", kwargs=dict(enabled="foo")))
self.assertEqual(r.status_code, 200)
self.assertListEqual([], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/off"]').contents(), ['Off'])
def test_new_enough(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '14', 'expires_soon' : 14})
r = self.client.get(urlreverse("ietf.cookies.views.new_enough"))
r = self.client.get(urlreverse("ietf.cookies.views.new_enough")) # no value: reset
self.assertEqual(r.status_code, 200)
self.assertEqual(r.cookies['new_enough'].value, '14')
self.assertEqual(r.cookies['new_enough'].value, '')
self.assertListEqual(['new_enough'], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])
@ -302,9 +352,9 @@ class CookieTests(TestCase):
def test_expires_soon(self):
make_test_data()
self.client.cookies = SimpleCookie({'full_draft': 'off', 'expires_soon' : '14', 'new_enough' : 14})
r = self.client.get(urlreverse("ietf.cookies.views.expires_soon"))
r = self.client.get(urlreverse("ietf.cookies.views.expires_soon")) # no value: reset
self.assertEqual(r.status_code, 200)
self.assertEqual(r.cookies['expires_soon'].value, '14')
self.assertEqual(r.cookies['expires_soon'].value, '')
self.assertListEqual(['expires_soon'], r.cookies.keys())
q = PyQuery(r.content)
self.assertEqual(q('div a.active[href="/accounts/settings/full_draft/off"]').contents(), ['Off'])

View file

@ -4,13 +4,13 @@ from django.conf.urls import patterns
from ietf.cookies import views
urlpatterns = patterns('',
(r'^$', views.settings),
(r'^new_enough/(?P<days>.*)$', views.new_enough),
(r'^$', views.preferences),
(r'^new_enough/(?P<days>.+)$', views.new_enough),
(r'^new_enough/', views.new_enough),
(r'^expires_soon/(?P<days>.*)$', views.expires_soon),
(r'^expires_soon/(?P<days>.+)$', views.expires_soon),
(r'^expires_soon/', views.expires_soon),
(r'^full_draft/(?P<enabled>.*)$', views.full_draft),
(r'^full_draft/(?P<enabled>.+)$', views.full_draft),
(r'^full_draft/', views.full_draft),
(r'^left_menu/(?P<enabled>.*)$', views.left_menu),
(r'^left_menu/(?P<enabled>.+)$', views.left_menu),
(r'^left_menu/', views.left_menu),
)

View file

@ -2,76 +2,53 @@
from django.shortcuts import render_to_response as render
from django.template import RequestContext
from django.conf import settings
def settings(request, new_enough = -1, expires_soon = -1, full_draft = "", left_menu=""):
if new_enough < 0:
if "new_enough" in request.COOKIES and request.COOKIES["new_enough"].isdigit():
new_enough = int(request.COOKIES["new_enough"])
else:
new_enough = 14
if expires_soon < 0:
if "expires_soon" in request.COOKIES and request.COOKIES["expires_soon"].isdigit():
expires_soon = int(request.COOKIES["expires_soon"])
else:
expires_soon = 14
if full_draft == "":
if "full_draft" in request.COOKIES:
full_draft = request.COOKIES["full_draft"]
if full_draft != 'on' and full_draft != 'off':
full_draft = "off"
else:
full_draft = "off"
if left_menu == "":
if "left_menu" in request.COOKIES:
left_menu = request.COOKIES["left_menu"]
if left_menu != 'on' and left_menu != 'off':
left_menu = "on"
else:
left_menu = "on"
return render("cookies/settings.html",
{
"new_enough" : new_enough,
"expires_soon" : expires_soon,
"full_draft" : full_draft,
"left_menu": left_menu,
}, context_instance=RequestContext(request))
import debug # pyflakes:ignore
def new_enough(request, days="14"):
try:
days = int(days)
except:
days = 0
if days == 0:
days = 14
response = settings(request, new_enough=days)
response.set_cookie("new_enough", days, 315360000)
def preferences(request, **kwargs):
preferences = request.COOKIES.copy()
new_cookies = {}
del_cookies = []
for key in settings.USER_PREFERENCE_DEFAULTS.keys():
if key in kwargs:
if kwargs[key] == None:
del_cookies += [key]
else:
# ignore bad kwargs
if key in ['new_enough', 'expires_soon'] and not kwargs[key].isdigit():
pass
elif key in ['full_draft', 'left_menu'] and not kwargs[key] in ['on', 'off']:
pass
else:
preferences[key] = new_cookies[key] = kwargs[key]
if not key in preferences or preferences[key] in [None, 'None', ''] or key in del_cookies:
preferences[key] = settings.USER_PREFERENCE_DEFAULTS[key]
# reset bad cookie values
if key in ['new_enough', 'expires_soon'] and not preferences[key].isdigit():
preferences[key] = settings.USER_PREFERENCE_DEFAULTS[key]
del_cookies += [key]
elif key in ['full_draft', 'left_menu'] and not preferences[key] in ['on', 'off']:
preferences[key] = settings.USER_PREFERENCE_DEFAULTS[key]
del_cookies += [key]
request.COOKIES.update(preferences)
response = render("cookies/settings.html", preferences, context_instance=RequestContext(request))
for key in new_cookies:
response.set_cookie(key, new_cookies[key], settings.SESSION_COOKIE_AGE)
for key in del_cookies:
response.delete_cookie(key)
return response
def expires_soon(request, days="14"):
try:
days = int(days)
except:
days = 0
if days == 0:
days = 14
response = settings(request, expires_soon=days)
response.set_cookie("expires_soon", days, 315360000)
return response
def new_enough(request, days=None):
return preferences(request, new_enough=days)
def full_draft(request, enabled="off"):
if enabled != "on" and enabled != "off":
enabled = "off"
response = settings(request, full_draft=enabled)
response.set_cookie("full_draft", enabled, 315360000)
return response
def expires_soon(request, days=None):
return preferences(request, expires_soon=days)
def left_menu(request, enabled="on"):
if enabled != "on" and enabled != "off":
enabled = "on"
# Propagate the new setting immediately, to render the settings page
# iteself according to the setting:
request.COOKIES["left_menu"] = enabled
response = settings(request, left_menu=enabled)
response.set_cookie("left_menu", enabled, 315360000)
return response
def full_draft(request, enabled=None):
return preferences(request, full_draft=enabled)
def left_menu(request, enabled=None):
return preferences(request, left_menu=enabled)

View file

@ -401,20 +401,18 @@ def unescape(text):
@register.filter(name='new_enough')
def new_enough(x,request):
days = 14
if "new_enough" in request.COOKIES:
value = request.COOKIES["new_enough"]
if value.isdigit():
days = int(value)
days = settings.USER_PREFERENCE_DEFAULTS["new_enough"]
value = request.COOKIES.get("new_enough", None)
if value and value.isdigit():
days = int(value)
return x < days
@register.filter(name='expires_soon')
def expires_soon(x,request):
days = 14
if "expires_soon" in request.COOKIES:
value = request.COOKIES["expires_soon"]
if value.isdigit():
days = int(value)
days = settings.USER_PREFERENCE_DEFAULTS["expires_soon"]
value = request.COOKIES.get("expires_soon", None)
if value and value.isdigit():
days = int(value)
return x > -days
@register.filter(name='startswith')

View file

@ -143,7 +143,7 @@ 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", "") == "on" )
split_content = not ( request.GET.get('include_text') or request.COOKIES.get("full_draft", settings.USER_PREFERENCE_DEFAULTS["full_draft"]) == "on" )
iesg_state = doc.get_state("draft-iesg")
iesg_state_summary = doc.friendly_state()

View file

@ -523,6 +523,14 @@ GROUP_VIRTUAL_DOMAIN = "virtual.ietf.org"
POSTCONFIRM_PATH = "/a/postconfirm/test-wrapper"
USER_PREFERENCE_DEFAULTS = {
"expires_soon" : "14",
"new_enough" : "14",
"full_draft" : "off",
"left_menu" : "on",
}
# Put the production SECRET_KEY in settings_local.py, and also any other
# sensitive or site-specific changes. DO NOT commit settings_local.py to svn.
from settings_local import * # pyflakes:ignore

View file

@ -23,7 +23,7 @@
{% endif %}
<li><a href="{% url "create_account" %}">{% if request.user.is_authenticated %}Manage account{% else %}New account{% endif %}</a></li>
<li><a href="{%url "ietf.cookies.views.settings" %}" rel="nofollow">Settings</a></li>
<li><a href="{%url "ietf.cookies.views.preferences" %}" rel="nofollow">Preferences</a></li>
{% if user|has_role:"Area Director" %}
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}

View file

@ -20,12 +20,12 @@
<p>This setting affects how many days are considered "new enough" to get the special highlighting in the documents table. Default setting is 14 days.</p>
<div class="btn-group btn-group-justified">
<a class="btn btn-default {% if new_enough == 7 %}active{% endif %}" href="/accounts/settings/new_enough/7">7 days</a>
<a class="btn btn-default {% if new_enough == 14 %}active{% endif %}" href="/accounts/settings/new_enough/14">14 days</a>
<a class="btn btn-default {% if new_enough == 21 %}active{% endif %}" href="/accounts/settings/new_enough/21">21 days</a>
<a class="btn btn-default {% if new_enough == 30 %}active{% endif %}" href="/accounts/settings/new_enough/30">30 days</a>
<a class="btn btn-default {% if new_enough == 60 %}active{% endif %}" href="/accounts/settings/new_enough/60">60 days</a>
<a class="btn btn-default {% if new_enough == 90 %}active{% endif %}" href="/accounts/settings/new_enough/90">90 days</a>
<a class="btn btn-default {% if new_enough == '7' %}active{% endif %}" href="/accounts/settings/new_enough/7">7 days</a>
<a class="btn btn-default {% if new_enough == '14' %}active{% endif %}" href="/accounts/settings/new_enough/14">14 days</a>
<a class="btn btn-default {% if new_enough == '21' %}active{% endif %}" href="/accounts/settings/new_enough/21">21 days</a>
<a class="btn btn-default {% if new_enough == '30' %}active{% endif %}" href="/accounts/settings/new_enough/30">30 days</a>
<a class="btn btn-default {% if new_enough == '60' %}active{% endif %}" href="/accounts/settings/new_enough/60">60 days</a>
<a class="btn btn-default {% if new_enough == '90' %}active{% endif %}" href="/accounts/settings/new_enough/90">90 days</a>
</div>
<h2 class="ietf-divider">How many days is considered "soon"?</h2>
@ -33,12 +33,12 @@
<p>This setting tells what is considered "soon" when showing documents that are going to be expire soon. Default setting is 14 days.</p>
<div class="btn-group btn-group-justified">
<a class="btn btn-default {% if expires_soon == 7 %}active{% endif %}" href="/accounts/settings/expires_soon/7">7 days</a>
<a class="btn btn-default {% if expires_soon == 14 %}active{% endif %}" href="/accounts/settings/expires_soon/14">14 days</a>
<a class="btn btn-default {% if expires_soon == 21 %}active{% endif %}" href="/accounts/settings/expires_soon/21">21 days</a>
<a class="btn btn-default {% if expires_soon == 30 %}active{% endif %}" href="/accounts/settings/expires_soon/30">30 days</a>
<a class="btn btn-default {% if expires_soon == 60 %}active{% endif %}" href="/accounts/settings/expires_soon/60">60 days</a>
<a class="btn btn-default {% if expires_soon == 90 %}active{% endif %}" href="/accounts/settings/expires_soon/90">90 days</a>
<a class="btn btn-default {% if expires_soon == '7' %}active{% endif %}" href="/accounts/settings/expires_soon/7">7 days</a>
<a class="btn btn-default {% if expires_soon == '14' %}active{% endif %}" href="/accounts/settings/expires_soon/14">14 days</a>
<a class="btn btn-default {% if expires_soon == '21' %}active{% endif %}" href="/accounts/settings/expires_soon/21">21 days</a>
<a class="btn btn-default {% if expires_soon == '30' %}active{% endif %}" href="/accounts/settings/expires_soon/30">30 days</a>
<a class="btn btn-default {% if expires_soon == '60' %}active{% endif %}" href="/accounts/settings/expires_soon/60">60 days</a>
<a class="btn btn-default {% if expires_soon == '90' %}active{% endif %}" href="/accounts/settings/expires_soon/90">90 days</a>
</div>
<h2 class="ietf-divider">Show full document text by default?</h2>
@ -46,8 +46,8 @@
<p>Show the full text immediately on the document page instead of only showing beginning of it. This defaults to off.</p>
<div class="btn-group btn-group-justified">
<a class="btn btn-default {% if full_draft == "off" %}active{% endif %}" href="/accounts/settings/full_draft/off">Off</a>
<a class="btn btn-default {% if full_draft == "on" %}active{% endif %}" href="/accounts/settings/full_draft/on">On</a>
<a class="btn btn-default {% if full_draft == 'off' %}active{% endif %}" href="/accounts/settings/full_draft/off">Off</a>
<a class="btn btn-default {% if full_draft == 'on' %}active{% endif %}" href="/accounts/settings/full_draft/on">On</a>
</div>
<h2 class="ietf-divider">Show the left-hand menu?</h2>
@ -55,8 +55,8 @@
<p>Show the left-hand menu on all regular pages? This defaults to on.</p>
<div class="btn-group btn-group-justified">
<a class="btn btn-default {% if left_menu == "off" %}active{% endif %}" href="/accounts/settings/left_menu/off">Off</a>
<a class="btn btn-default {% if left_menu == "on" %}active{% endif %}" href="/accounts/settings/left_menu/on">On</a>
<a class="btn btn-default {% if left_menu == 'off' %}active{% endif %}" href="/accounts/settings/left_menu/off">Off</a>
<a class="btn btn-default {% if left_menu == 'on' %}active{% endif %}" href="/accounts/settings/left_menu/on">On</a>
</div>