From f70b2d93c51c246d1d53cde22844a6d15a6a8ce3 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 22 Jun 2015 18:47:28 +0000 Subject: [PATCH] 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 --- ietf/cookies/tests.py | 120 ++++++++++++++++++-------- ietf/cookies/urls.py | 10 +-- ietf/cookies/views.py | 109 +++++++++-------------- ietf/doc/templatetags/ietf_filters.py | 18 ++-- ietf/doc/views_doc.py | 2 +- ietf/settings.py | 8 ++ ietf/templates/base/menu_user.html | 2 +- ietf/templates/cookies/settings.html | 32 +++---- 8 files changed, 167 insertions(+), 134 deletions(-) diff --git a/ietf/cookies/tests.py b/ietf/cookies/tests.py index c76e18847..feb632744 100644 --- a/ietf/cookies/tests.py +++ b/ietf/cookies/tests.py @@ -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']) diff --git a/ietf/cookies/urls.py b/ietf/cookies/urls.py index bec6a2fe5..b8f146dcb 100644 --- a/ietf/cookies/urls.py +++ b/ietf/cookies/urls.py @@ -4,13 +4,13 @@ from django.conf.urls import patterns from ietf.cookies import views urlpatterns = patterns('', - (r'^$', views.settings), - (r'^new_enough/(?P.*)$', views.new_enough), + (r'^$', views.preferences), + (r'^new_enough/(?P.+)$', views.new_enough), (r'^new_enough/', views.new_enough), - (r'^expires_soon/(?P.*)$', views.expires_soon), + (r'^expires_soon/(?P.+)$', views.expires_soon), (r'^expires_soon/', views.expires_soon), - (r'^full_draft/(?P.*)$', views.full_draft), + (r'^full_draft/(?P.+)$', views.full_draft), (r'^full_draft/', views.full_draft), - (r'^left_menu/(?P.*)$', views.left_menu), + (r'^left_menu/(?P.+)$', views.left_menu), (r'^left_menu/', views.left_menu), ) diff --git a/ietf/cookies/views.py b/ietf/cookies/views.py index 738bbde06..cb25b55a5 100644 --- a/ietf/cookies/views.py +++ b/ietf/cookies/views.py @@ -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) diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py index fb618cf30..727744dd3 100644 --- a/ietf/doc/templatetags/ietf_filters.py +++ b/ietf/doc/templatetags/ietf_filters.py @@ -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') diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 102d12dc5..efc5db1df 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -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() diff --git a/ietf/settings.py b/ietf/settings.py index 265117458..751fd5613 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -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 diff --git a/ietf/templates/base/menu_user.html b/ietf/templates/base/menu_user.html index ff7556131..3fbab780e 100644 --- a/ietf/templates/base/menu_user.html +++ b/ietf/templates/base/menu_user.html @@ -23,7 +23,7 @@ {% endif %}
  • {% if request.user.is_authenticated %}Manage account{% else %}New account{% endif %}
  • -
  • Settings
  • +
  • Preferences
  • {% if user|has_role:"Area Director" %} {% if flavor == "top" %}{% endif %} diff --git a/ietf/templates/cookies/settings.html b/ietf/templates/cookies/settings.html index e3350e5f7..f39f4ed85 100644 --- a/ietf/templates/cookies/settings.html +++ b/ietf/templates/cookies/settings.html @@ -20,12 +20,12 @@

    This setting affects how many days are considered "new enough" to get the special highlighting in the documents table. Default setting is 14 days.

    How many days is considered "soon"?

    @@ -33,12 +33,12 @@

    This setting tells what is considered "soon" when showing documents that are going to be expire soon. Default setting is 14 days.

    Show full document text by default?

    @@ -46,8 +46,8 @@

    Show the full text immediately on the document page instead of only showing beginning of it. This defaults to off.

    - Off - On + Off + On

    Show the left-hand menu?

    @@ -55,8 +55,8 @@

    Show the left-hand menu on all regular pages? This defaults to on.

    - Off - On + Off + On