﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
6727	django.utils.cache.patch_cache_control enhancement when response has empty cache control header	pascal@…	nobody	"See source:/django/trunk/django/utils/cache.py :

{{{
60: 	    if response.has_header('Cache-Control'):
61: 	        cc = cc_delim_re.split(response['Cache-Control'])
62: 	        cc = dict([dictitem(el) for el in cc])
}}}

If a Cache-Control header exists but is empty, this will add a useless comma in the result.
See:
{{{
>>> cache_control_header=''
>>> import re
>>> cc_delim_re = re.compile(r'\s*,\s*')
>>> cc = cc_delim_re.split(cache_control_header)
>>> def dictitem(s):
...         t = s.split('=',1)
...         if len(t) > 1:
...             return (t[0].lower(), t[1])
...         else:
...             return (t[0].lower(), True)
... 
>>> cc = dict([dictitem(el) for el in cc])
>>> cc
{'': True}
>>> def dictvalue(t):
...     if t[1] is True:
...         return t[0]
...     else:
...         return t[0] + '=' + smart_str(t[1])
... 
>>> from django.utils.encoding import smart_str
>>> cc['max-age']='300'
>>> cc = ', '.join([dictvalue(el) for el in cc.items()])
>>> cc
', max-age=300'
}}}

Note that this is still a valid cache control header according to:
 * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 
 * http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.1

But It would be nicer to test if existing cache control response header is empty, so something like:

{{{
60: 	    if response.has_header('Cache-Control') and response['Cache-Control']:
}}}
"		new	HTTP handling	dev				doug@…	Accepted	0	0	0	0		
