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:
parent
9067f88fa7
commit
f70b2d93c5
|
@ -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'])
|
||||
|
|
|
@ -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),
|
||||
)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue