Fixed edge case that breaks the test suite on versions of Python > 2.6.4

Before http://svn.python.org/view?view=rev&revision=74647 it was possible to
pass a SimpleCookie to load, but this no longer works due to a different bug
in Python the said revision fixed.

My guess is a SimpleCookie was never intended to be passed through load which
is perfectly reasonable.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@11820 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Brian Rosner 2009-12-12 15:30:25 +00:00
parent 85def09554
commit 2659429df4
1 changed files with 10 additions and 8 deletions

View File

@ -1,6 +1,6 @@
import os import os
import re import re
from Cookie import SimpleCookie, CookieError from Cookie import BaseCookie, SimpleCookie, CookieError
from pprint import pformat from pprint import pformat
from urllib import urlencode from urllib import urlencode
from urlparse import urljoin from urlparse import urljoin
@ -251,13 +251,15 @@ class QueryDict(MultiValueDict):
def parse_cookie(cookie): def parse_cookie(cookie):
if cookie == '': if cookie == '':
return {} return {}
try: if not isinstance(cookie, BaseCookie):
c = SimpleCookie() try:
c.load(cookie) c = SimpleCookie()
except CookieError: c.load(cookie)
# Invalid cookie except CookieError:
return {} # Invalid cookie
return {}
else:
c = cookie
cookiedict = {} cookiedict = {}
for key in c.keys(): for key in c.keys():
cookiedict[key] = c.get(key).value cookiedict[key] = c.get(key).value