summaryrefslogtreecommitdiff
path: root/django/core
diff options
context:
space:
mode:
authorTomek Paczkowski <tomek@hauru.eu>2013-02-24 12:58:02 +0100
committerHonza Kral <honza.kral@gmail.com>2013-02-24 14:32:45 +0100
commit99edbe0e279166db82caaf545ef92d5446a6a07e (patch)
tree495785ea6bca5f1c94881d624b622b1d6ea93b30 /django/core
parentb9cc61021a0db1e5b41e61d3e53180e4fc618f9c (diff)
Fixed #19253 -- Extracted template cache key building logic
Introduced a public function django.core.cache.utils.make_template_fragment_key Thanks @chrismedrela for fruitful cooperation.
Diffstat (limited to 'django/core')
-rw-r--r--django/core/cache/utils.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/django/core/cache/utils.py b/django/core/cache/utils.py
new file mode 100644
index 0000000000..4310825ad4
--- /dev/null
+++ b/django/core/cache/utils.py
@@ -0,0 +1,15 @@
+from __future__ import absolute_import, unicode_literals
+
+import hashlib
+from django.utils.encoding import force_bytes
+from django.utils.http import urlquote
+
+TEMPLATE_FRAGMENT_KEY_TEMPLATE = 'template.cache.%s.%s'
+
+
+def make_template_fragment_key(fragment_name, vary_on=None):
+ if vary_on is None:
+ vary_on = ()
+ key = ':'.join([urlquote(var) for var in vary_on])
+ args = hashlib.md5(force_bytes(key))
+ return TEMPLATE_FRAGMENT_KEY_TEMPLATE % (fragment_name, args.hexdigest())