Code

Ticket #5691: i18n_cache_keys_r7960_t5691.diff

File i18n_cache_keys_r7960_t5691.diff, 2.7 KB (added by andrewbadr, 6 years ago)
Line 
1Index: django/utils/cache.py
2===================================================================
3--- django/utils/cache.py       (revision 7950)
4+++ django/utils/cache.py       (working copy)
5@@ -29,6 +29,7 @@
6 from django.core.cache import cache
7 from django.utils.encoding import smart_str, iri_to_uri
8 from django.utils.http import http_date
9+from django.utils import translation
10 
11 cc_delim_re = re.compile(r'\s*,\s*')
12 
13@@ -143,9 +144,14 @@
14         value = request.META.get(header, None)
15         if value is not None:
16             ctx.update(value)
17-    return 'views.decorators.cache.cache_page.%s.%s.%s' % (
18-               key_prefix, iri_to_uri(request.path), ctx.hexdigest())
19-
20+    if settings.USE_I18N:
21+        lang = translation.get_language()
22+        return 'views.decorators.cache.cache_page.%s.%s.%s.%s' % (
23+                   key_prefix, iri_to_uri(request.path), ctx.hexdigest(), lang)
24+    else:
25+        return 'views.decorators.cache.cache_page.%s.%s.%s' % (
26+                   key_prefix, iri_to_uri(request.path), ctx.hexdigest())
27+   
28 def get_cache_key(request, key_prefix=None):
29     """
30     Returns a cache key based on the request path. It can be used in the
31@@ -158,8 +164,13 @@
32     """
33     if key_prefix is None:
34         key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
35-    cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
36-                    key_prefix, iri_to_uri(request.path))
37+    if settings.USE_I18N:
38+        lang = translation.get_language()
39+        cache_key = 'views.decorators.cache.cache_header.%s.%s.%s' % (
40+                        key_prefix, iri_to_uri(request.path), lang)
41+    else:
42+        cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
43+                        key_prefix, iri_to_uri(request.path))
44     headerlist = cache.get(cache_key, None)
45     if headerlist is not None:
46         return _generate_cache_key(request, headerlist, key_prefix)
47@@ -183,8 +194,13 @@
48         key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
49     if cache_timeout is None:
50         cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
51-    cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
52-                    key_prefix, iri_to_uri(request.path))
53+    if settings.USE_I18N:
54+        lang = translation.get_language()
55+        cache_key = 'views.decorators.cache.cache_header.%s.%s.%s' % (
56+                        key_prefix, iri_to_uri(request.path), lang)
57+    else:
58+        cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
59+                        key_prefix, iri_to_uri(request.path))
60     if response.has_header('Vary'):
61         headerlist = ['HTTP_'+header.upper().replace('-', '_')
62                       for header in cc_delim_re.split(response['Vary'])]