Code

Ticket #13686: 13686_14703_unicode_in_memcached_backend_r14757.diff

File 13686_14703_unicode_in_memcached_backend_r14757.diff, 2.0 KB (added by accuser, 3 years ago)

Extended patch with fix for #14703

Line 
1Index: django/core/cache/backends/memcached.py
2===================================================================
3--- django/core/cache/backends/memcached.py     (revision 14757)
4+++ django/core/cache/backends/memcached.py     (working copy)
5@@ -40,8 +40,6 @@
6 
7     def add(self, key, value, timeout=0, version=None):
8         key = self.make_key(key, version=version)
9-        if isinstance(value, unicode):
10-            value = value.encode('utf-8')
11         return self._cache.add(key, value, self._get_memcache_timeout(timeout))
12 
13     def get(self, key, default=None, version=None):
14@@ -106,8 +104,6 @@
15         safe_data = {}
16         for key, value in data.items():
17             key = self.make_key(key, version=version)
18-            if isinstance(value, unicode):
19-                value = value.encode('utf-8')
20             safe_data[key] = value
21         self._cache.set_multi(safe_data, self._get_memcache_timeout(timeout))
22 
23Index: tests/regressiontests/cache/tests.py
24===================================================================
25--- tests/regressiontests/cache/tests.py        (revision 14757)
26+++ tests/regressiontests/cache/tests.py        (working copy)
27@@ -315,10 +315,24 @@
28             u'Iñtërnâtiônàlizætiøn': u'Iñtërnâtiônàlizætiøn2',
29             u'ascii': {u'x' : 1 }
30             }
31+        # Test `set`
32         for (key, value) in stuff.items():
33             self.cache.set(key, value)
34             self.assertEqual(self.cache.get(key), value)
35 
36+        # Test `add`
37+        for (key, value) in stuff.items():
38+            self.cache.delete(key)
39+            self.cache.add(key, value)
40+            self.assertEqual(self.cache.get(key), value)
41+
42+        # Test `set_many`
43+        for (key, value) in stuff.items():
44+            self.cache.delete(key)
45+        self.cache.set_many(stuff)
46+        for (key, value) in stuff.items():
47+            self.assertEqual(self.cache.get(key), value)
48+
49     def test_binary_string(self):
50         # Binary strings should be cachable
51         from zlib import compress, decompress