From 23cfcbebb11413f4c46d1523e27b035095df0793 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Sat, 6 Nov 2010 09:33:32 +0000 Subject: [PATCH] Merged [2619] from kivinen@iki.fi: Setting user cookies, and settable expires soon and new tags in id/rfc list. - Legacy-Id: 2634 Note: SVN reference [2619] has been migrated to Git commit ddd9b6fe4d702af5e9b132621a47f59fe2f36b4e --- ietf/cookies/__init__.py | 2 + ietf/cookies/urls.py | 12 +++++ ietf/cookies/views.py | 44 +++++++++++++++++ ietf/idtracker/templatetags/ietf_filters.py | 17 +++++++ ietf/templates/cookies/settings.html | 53 +++++++++++++++++++++ ietf/templates/idrfc/date_column.html | 4 +- ietf/urls.py | 1 + 7 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 ietf/cookies/__init__.py create mode 100644 ietf/cookies/urls.py create mode 100644 ietf/cookies/views.py create mode 100644 ietf/templates/cookies/settings.html diff --git a/ietf/cookies/__init__.py b/ietf/cookies/__init__.py new file mode 100644 index 000000000..53b0062c1 --- /dev/null +++ b/ietf/cookies/__init__.py @@ -0,0 +1,2 @@ +# Copyright The IETF Trust 2010, All Rights Reserved + diff --git a/ietf/cookies/urls.py b/ietf/cookies/urls.py new file mode 100644 index 000000000..35cba07be --- /dev/null +++ b/ietf/cookies/urls.py @@ -0,0 +1,12 @@ +# Copyright The IETF Trust 2010, All Rights Reserved + +from django.conf.urls.defaults import patterns +from ietf.cookies import views + +urlpatterns = patterns('', + (r'^$', views.settings), + (r'^new_enough/(?P.*)$', views.new_enough), + (r'^new_enough/', views.new_enough), + (r'^expires_soon/(?P.*)$', views.expires_soon), + (r'^expires_soon/', views.expires_soon), +) diff --git a/ietf/cookies/views.py b/ietf/cookies/views.py new file mode 100644 index 000000000..8b0f1a691 --- /dev/null +++ b/ietf/cookies/views.py @@ -0,0 +1,44 @@ +# Copyright The IETF Trust 2010, All Rights Reserved + +from django.http import HttpResponse +from django.shortcuts import render_to_response as render, get_object_or_404 +from django.template import RequestContext + +def settings(request, new_enough = -1, expires_soon = -1): + if new_enough < 0: + if "new_enough" in request.COOKIES: + new_enough = int(request.COOKIES["new_enough"]) + else: + new_enough = 14 + if expires_soon < 0: + if "expires_soon" in request.COOKIES: + expires_soon = int(request.COOKIES["expires_soon"]) + else: + expires_soon = 14 + return render("cookies/settings.html", + { + "new_enough" : new_enough, + "expires_soon" : expires_soon + }, context_instance=RequestContext(request)) + +def new_enough(request, days="14"): + try: + days = int(days) + except: + days = 0 + if days == 0: + days = 14 + response = settings(request, days, -1) + response.set_cookie("new_enough", days) + return response + +def expires_soon(request, days="14"): + try: + days = int(days) + except: + days = 0 + if days == 0: + days = 14 + response = settings(request, -1, days) + response.set_cookie("expires_soon", days) + return response diff --git a/ietf/idtracker/templatetags/ietf_filters.py b/ietf/idtracker/templatetags/ietf_filters.py index 03c262c78..4bd4c10a4 100644 --- a/ietf/idtracker/templatetags/ietf_filters.py +++ b/ietf/idtracker/templatetags/ietf_filters.py @@ -13,6 +13,7 @@ except ImportError: import re import datetime import types +from django.template import RequestContext register = template.Library() @@ -339,6 +340,22 @@ def unescape(text): text = text.replace("
", "\n") return text +@register.filter(name='new_enough') +def new_enough(x,request): + if "new_enough" in request.COOKIES: + days = int(request.COOKIES["new_enough"]) + else: + days = 14 + return x < days + +@register.filter(name='expires_soon') +def expires_soon(x,request): + if "expires_soon" in request.COOKIES: + days = int(request.COOKIES["expires_soon"]) + else: + days = 14 + return x > -days + @register.filter(name='greater_than') def greater_than(x, y): return x > int(y) diff --git a/ietf/templates/cookies/settings.html b/ietf/templates/cookies/settings.html new file mode 100644 index 000000000..a004d5271 --- /dev/null +++ b/ietf/templates/cookies/settings.html @@ -0,0 +1,53 @@ +{# Copyright The IETF Trust 2010, All Rights Reserved #} +{% extends "base.html" %} +{% load ietf_filters %} +{% block title %}User settings{% endblock %} +{% block content %} + +

Cookie settings for the ietf datatracker.

+ +

Following settings are implemented using cookies, so if you have +cookies disabled then you are not able to change the settings +(everything still continues to work by using default settings).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

How many days is considered new

+
+

This setting affects how many days is considered new enough to get the special marking in the drafts page. Default setting is 14 days.

+
{% if new_enough|equal:"7" %}7 days{%else%}7 days{% endif %}{% if new_enough|equal:"14" %}14 days{%else%}14 days{% endif %}{% if new_enough|equal:"21" %}21 days{%else%}21 days{% endif %}{% if new_enough|equal:"30" %}30 days{%else%}30 days{% endif %}{% if new_enough|equal:"60" %}60 days{%else%}60 days{% endif %}{% if new_enough|equal:"90" %}90 days{%else%}90 days{% endif %}
+

How many days is considered soon

+
+

This setting tells what is considered soon when showing document which is going to be expire soon. Default setting is 14 days.

+
{% if expires_soon|equal:"7" %}7 days{%else%}7 days{% endif %}{% if expires_soon|equal:"14" %}14 days{%else%}14 days{% endif %}{% if expires_soon|equal:"21" %}21 days{%else%}21 days{% endif %}{% if expires_soon|equal:"30" %}30 days{%else%}30 days{% endif %}{% if expires_soon|equal:"60" %}60 days{%else%}60 days{% endif %}{% if expires_soon|equal:"90" %}90 days{%else%}90 days{% endif %}
+{% endblock %} + diff --git a/ietf/templates/idrfc/date_column.html b/ietf/templates/idrfc/date_column.html index bd67f87cb..41133d6fc 100644 --- a/ietf/templates/idrfc/date_column.html +++ b/ietf/templates/idrfc/date_column.html @@ -32,6 +32,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. {% endcomment %} {% load ietf_filters %}{% if not doc.rfc %}{{ doc.publication_date }}{% else %}{{ doc.publication_date|date:"Y-m" }}{% endif %} -{% if doc.publication_date|timesince_days|less_than:"14" %}
{% if not doc.rfc%}new{%else%}new{%endif%}{%endif%} -{% if doc.id and doc.id.expected_expiration_date and doc.id.expected_expiration_date|timesince_days|greater_than:"-14" %}
expires soon{%endif%} +{% if doc.publication_date|timesince_days|new_enough:request %}
{% if not doc.rfc%}new{%else%}new{%endif%}{%endif%} +{% if doc.id and doc.id.expected_expiration_date and doc.id.expected_expiration_date|timesince_days|expires_soon:request %}
expires soon{%endif%} diff --git a/ietf/urls.py b/ietf/urls.py index 84fb609b3..cd6aeb7cc 100644 --- a/ietf/urls.py +++ b/ietf/urls.py @@ -55,6 +55,7 @@ urlpatterns = patterns('', (r'^accounts/', include('ietf.ietfauth.urls')), (r'^doc/', include('ietf.idrfc.urls')), (r'^wg/', include('ietf.wginfo.urls')), + (r'^cookies/', include('ietf.cookies.urls')), (r'^$', 'ietf.idrfc.views.main'), (r'^admin/doc/', include('django.contrib.admindocs.urls')),