diff -r b758351d191f -r cc9b7e14412b web/lib/django/utils/cache.py --- a/web/lib/django/utils/cache.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/utils/cache.py Tue May 25 02:43:45 2010 +0200 @@ -19,16 +19,13 @@ import re import time -try: - set -except NameError: - from sets import Set as set # Python 2.3 fallback from django.conf import settings from django.core.cache import cache from django.utils.encoding import smart_str, iri_to_uri from django.utils.http import http_date from django.utils.hashcompat import md5_constructor +from django.utils.translation import get_language from django.http import HttpRequest cc_delim_re = re.compile(r'\s*,\s*') @@ -137,6 +134,15 @@ if newheader.lower() not in existing_headers] response['Vary'] = ', '.join(vary_headers + additional_headers) +def _i18n_cache_key_suffix(request, cache_key): + """If enabled, returns the cache key ending with a locale.""" + if settings.USE_I18N: + # first check if LocaleMiddleware or another middleware added + # LANGUAGE_CODE to request, then fall back to the active language + # which in turn can also fall back to settings.LANGUAGE_CODE + cache_key += '.%s' % getattr(request, 'LANGUAGE_CODE', get_language()) + return cache_key + def _generate_cache_key(request, headerlist, key_prefix): """Returns a cache key from the headers given in the header list.""" ctx = md5_constructor() @@ -145,13 +151,16 @@ if value is not None: ctx.update(value) path = md5_constructor(iri_to_uri(request.path)) - return 'views.decorators.cache.cache_page.%s.%s.%s' % ( - key_prefix, path.hexdigest(), ctx.hexdigest()) + cache_key = 'views.decorators.cache.cache_page.%s.%s.%s' % ( + key_prefix, path.hexdigest(), ctx.hexdigest()) + return _i18n_cache_key_suffix(request, cache_key) def _generate_cache_header_key(key_prefix, request): """Returns a cache key for the header cache.""" path = md5_constructor(iri_to_uri(request.path)) - return 'views.decorators.cache.cache_header.%s.%s' % (key_prefix, path.hexdigest()) + cache_key = 'views.decorators.cache.cache_header.%s.%s' % ( + key_prefix, path.hexdigest()) + return _i18n_cache_key_suffix(request, cache_key) def get_cache_key(request, key_prefix=None): """