From f243ab7eaadb7bf191c81afbcce5f360479c38df Mon Sep 17 00:00:00 2001 From: Marco Bonetti Date: Wed, 30 Jan 2013 20:45:16 +0100 Subject: [PATCH] add an explicit cache timeout value in the CacheRosettaStorage, to mitigate #59 --- rosetta/storage.py | 2 +- rosetta/templatetags/rosetta.py | 52 ++++++++++++++++++--------------- rosetta/views.py | 1 - testproject/urls.py | 3 ++ 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/rosetta/storage.py b/rosetta/storage.py index 75e6dd0..7c2d77d 100644 --- a/rosetta/storage.py +++ b/rosetta/storage.py @@ -86,7 +86,7 @@ class CacheRosettaStorage(BaseRosettaStorage): def set(self, key, val): #print ('set', self._key_prefix + key) - cache.set(self._key_prefix + key, val) + cache.set(self._key_prefix + key, val, 86400) def has(self, key): #print ('has', self._key_prefix + key) diff --git a/rosetta/templatetags/rosetta.py b/rosetta/templatetags/rosetta.py index bb28352..4eeec2a 100644 --- a/rosetta/templatetags/rosetta.py +++ b/rosetta/templatetags/rosetta.py @@ -3,44 +3,48 @@ from django.utils.safestring import mark_safe from django.utils.html import escape import re from django.template import Node -from django.utils.encoding import smart_str, smart_unicode -from django.template.defaultfilters import stringfilter +from django.utils.encoding import smart_unicode + register = template.Library() rx = re.compile(r'(%(\([^\s\)]*\))?[sd])') + def format_message(message): - return mark_safe(rx.sub('\\1', escape(message).replace(r'\n','
\n'))) -format_message=register.filter(format_message) + return mark_safe(rx.sub('\\1', escape(message).replace(r'\n', '
\n'))) +format_message = register.filter(format_message) def lines_count(message): - return 1 + sum([len(line)/50 for line in message.split('\n')]) -lines_count=register.filter(lines_count) + return 1 + sum([len(line) / 50 for line in message.split('\n')]) +lines_count = register.filter(lines_count) -def mult(a,b): - return int(a)*int(b) -mult=register.filter(mult) -def minus(a,b): +def mult(a, b): + return int(a) * int(b) +mult = register.filter(mult) + + +def minus(a, b): try: return int(a) - int(b) except: return 0 -minus=register.filter(minus) +minus = register.filter(minus) -def gt(a,b): + +def gt(a, b): try: return int(a) > int(b) except: return False -gt=register.filter(gt) +gt = register.filter(gt) def do_incr(parser, token): args = token.split_contents() if len(args) < 2: - raise TemplateSyntaxError("'incr' tag requires at least one argument") + raise SyntaxError("'incr' tag requires at least one argument") name = args[1] if not hasattr(parser, '_namedIncrNodes'): parser._namedIncrNodes = {} @@ -51,26 +55,28 @@ do_incr = register.tag('increment', do_incr) class IncrNode(template.Node): - def __init__(self, init_val=0): - self.val = init_val + def __init__(self, init_val=0): + self.val = init_val + + def render(self, context): + self.val += 1 + return smart_unicode(self.val) + - def render(self, context): - self.val += 1 - return smart_unicode(self.val) - - def is_fuzzy(message): return message and hasattr(message, 'flags') and 'fuzzy' in message.flags is_fuzzy = register.filter(is_fuzzy) + class RosettaCsrfTokenPlaceholder(Node): def render(self, context): return mark_safe(u"") + def rosetta_csrf_token(parser, token): try: from django.template.defaulttags import csrf_token - return csrf_token(parser,token) + return csrf_token(parser, token) except ImportError: return RosettaCsrfTokenPlaceholder() -rosetta_csrf_token=register.tag(rosetta_csrf_token) +rosetta_csrf_token = register.tag(rosetta_csrf_token) diff --git a/rosetta/views.py b/rosetta/views.py index 0fc2ab5..cfbb818 100644 --- a/rosetta/views.py +++ b/rosetta/views.py @@ -15,7 +15,6 @@ from rosetta.signals import entry_changed, post_save from rosetta.storage import get_storage import re import rosetta -import datetime import unicodedata import hashlib import os diff --git a/testproject/urls.py b/testproject/urls.py index 0948f3b..5bdc133 100644 --- a/testproject/urls.py +++ b/testproject/urls.py @@ -1,4 +1,5 @@ from django.conf.urls.defaults import patterns, include, url +from django.contrib.staticfiles.urls import staticfiles_urlpatterns # Uncomment the next two lines to enable the admin: from django.contrib import admin @@ -16,3 +17,5 @@ urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), url(r'^rosetta/', include('rosetta.urls')) ) + +urlpatterns += staticfiles_urlpatterns()