diff options
| author | Claude Paroz <claude@2xlibre.net> | 2013-01-11 21:09:33 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2013-01-11 21:14:39 +0100 |
| commit | 1d03ff06bbcc726c815f26f79067692019b2c71a (patch) | |
| tree | 99acc63884f278d0026666dbff4463172433403a | |
| parent | b86c3ddce88390dacc04094fbdce1b722fb8127b (diff) | |
[1.5.x] Fixed #19585 -- Fixed loading cookie value as a dict
This regression was introduced by the 'unicode_literals' patch.
Backport of f08e739bc2 from master.
| -rw-r--r-- | django/http/cookie.py | 5 | ||||
| -rw-r--r-- | tests/regressiontests/httpwrappers/tests.py | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/django/http/cookie.py b/django/http/cookie.py index 78adb09ce8..50ff549caf 100644 --- a/django/http/cookie.py +++ b/django/http/cookie.py @@ -1,6 +1,7 @@ from __future__ import absolute_import, unicode_literals from django.utils.encoding import force_str +from django.utils import six from django.utils.six.moves import http_cookies @@ -48,7 +49,9 @@ else: if not _cookie_allows_colon_in_names: def load(self, rawdata): self.bad_cookies = set() - super(SimpleCookie, self).load(force_str(rawdata)) + if not six.PY3 and isinstance(rawdata, six.text_type): + rawdata = force_str(rawdata) + super(SimpleCookie, self).load(rawdata) for key in self.bad_cookies: del self[key] diff --git a/tests/regressiontests/httpwrappers/tests.py b/tests/regressiontests/httpwrappers/tests.py index d26a728e7b..83de972ad9 100644 --- a/tests/regressiontests/httpwrappers/tests.py +++ b/tests/regressiontests/httpwrappers/tests.py @@ -588,3 +588,7 @@ class CookieTests(unittest.TestCase): c['name']['httponly'] = True self.assertTrue(c['name']['httponly']) + def test_load_dict(self): + c = SimpleCookie() + c.load({'name': 'val'}) + self.assertEqual(c['name'].value, 'val') |
