Log message for revision 112511: - LP #142226: Added an extra keyword argument to the HTTPResponse setCookie method to suppress enclosing the cookie value field in double quotes.
Changed: U Zope/trunk/doc/CHANGES.rst U Zope/trunk/src/Products/OFSP/help/Response.py U Zope/trunk/src/ZPublisher/HTTPResponse.py U Zope/trunk/src/ZPublisher/tests/testHTTPResponse.py -=- Modified: Zope/trunk/doc/CHANGES.rst =================================================================== --- Zope/trunk/doc/CHANGES.rst 2010-05-19 07:32:33 UTC (rev 112510) +++ Zope/trunk/doc/CHANGES.rst 2010-05-19 09:17:40 UTC (rev 112511) @@ -99,6 +99,10 @@ Features Added ++++++++++++++ +- LP #142226: Added an extra keyword argument to the HTTPResponse + setCookie method to suppress enclosing the cookie value field + in double quotes. + - LP #142464: Make undo log easier to read. Thanks to Toby Dickinson for the patch. Modified: Zope/trunk/src/Products/OFSP/help/Response.py =================================================================== --- Zope/trunk/src/Products/OFSP/help/Response.py 2010-05-19 07:32:33 UTC (rev 112510) +++ Zope/trunk/src/Products/OFSP/help/Response.py 2010-05-19 09:17:40 UTC (rev 112511) @@ -110,7 +110,7 @@ ''' - def setCookie(name,value,**kw): + def setCookie(name, value, quoted=True, **kw): ''' Set an HTTP cookie on the browser @@ -120,6 +120,10 @@ "value". This overwrites any previously set value for the cookie in the Response object. + By default, the cookie value will be enclosed in double quotes. + To suppress the double quotes you can pass the "quoted" argument + with a False value such as False or 0. + Permission -- Always available ''' Modified: Zope/trunk/src/ZPublisher/HTTPResponse.py =================================================================== --- Zope/trunk/src/ZPublisher/HTTPResponse.py 2010-05-19 07:32:33 UTC (rev 112510) +++ Zope/trunk/src/ZPublisher/HTTPResponse.py 2010-05-19 09:17:40 UTC (rev 112511) @@ -563,7 +563,7 @@ d['expires'] = 'Wed, 31-Dec-97 23:59:59 GMT' apply(HTTPResponse.setCookie, (self, name, 'deleted'), d) - def setCookie(self,name,value,**kw): + def setCookie(self, name, value, quoted=True, **kw): '''\ Set an HTTP cookie on the browser @@ -583,6 +583,7 @@ for k, v in kw.items(): cookie[k] = v cookie['value'] = value + cookie['quoted'] = quoted def appendHeader(self, name, value, delimiter=","): '''\ @@ -843,7 +844,10 @@ # quoted cookie attr values, so only the value part # of name=value pairs may be quoted. - cookie = 'Set-Cookie: %s="%s"' % (name, quote(attrs['value'])) + if attrs.get('quoted', True): + cookie = 'Set-Cookie: %s="%s"' % (name, quote(attrs['value'])) + else: + cookie = 'Set-Cookie: %s=%s' % (name, quote(attrs['value'])) for name, v in attrs.items(): name = name.lower() if name == 'expires': Modified: Zope/trunk/src/ZPublisher/tests/testHTTPResponse.py =================================================================== --- Zope/trunk/src/ZPublisher/tests/testHTTPResponse.py 2010-05-19 07:32:33 UTC (rev 112510) +++ Zope/trunk/src/ZPublisher/tests/testHTTPResponse.py 2010-05-19 09:17:40 UTC (rev 112511) @@ -34,8 +34,9 @@ response = self._makeOne() response.setCookie('foo', 'bar') cookie = response.cookies.get('foo', None) - self.assertEqual(len(cookie), 1) + self.assertEqual(len(cookie), 2) self.assertEqual(cookie.get('value'), 'bar') + self.assertEqual(cookie.get('quoted'), True) cookies = response._cookie_list() self.assertEqual(len(cookies), 1) @@ -49,6 +50,7 @@ self.failUnless(cookie) self.assertEqual(cookie.get('value'), 'bar') self.assertEqual(cookie.get('expires'), EXPIRES) + self.assertEqual(cookie.get('quoted'), True) cookies = response._cookie_list() self.assertEqual(len(cookies), 1) @@ -59,9 +61,10 @@ response = self._makeOne() response.setCookie('foo', 'bar', domain='example.com') cookie = response.cookies.get('foo', None) - self.assertEqual(len(cookie), 2) + self.assertEqual(len(cookie), 3) self.assertEqual(cookie.get('value'), 'bar') self.assertEqual(cookie.get('domain'), 'example.com') + self.assertEqual(cookie.get('quoted'), True) cookies = response._cookie_list() self.assertEqual(len(cookies), 1) @@ -72,9 +75,10 @@ response = self._makeOne() response.setCookie('foo', 'bar', path='/') cookie = response.cookies.get('foo', None) - self.assertEqual(len(cookie), 2) + self.assertEqual(len(cookie), 3) self.assertEqual(cookie.get('value'), 'bar') self.assertEqual(cookie.get('path'), '/') + self.assertEqual(cookie.get('quoted'), True) cookies = response._cookie_list() self.assertEqual(len(cookies), 1) @@ -84,9 +88,10 @@ response = self._makeOne() response.setCookie('foo', 'bar', comment='COMMENT') cookie = response.cookies.get('foo', None) - self.assertEqual(len(cookie), 2) + self.assertEqual(len(cookie), 3) self.assertEqual(cookie.get('value'), 'bar') self.assertEqual(cookie.get('comment'), 'COMMENT') + self.assertEqual(cookie.get('quoted'), True) cookies = response._cookie_list() self.assertEqual(len(cookies), 1) @@ -96,9 +101,10 @@ response = self._makeOne() response.setCookie('foo', 'bar', secure='SECURE') cookie = response.cookies.get('foo', None) - self.assertEqual(len(cookie), 2) + self.assertEqual(len(cookie), 3) self.assertEqual(cookie.get('value'), 'bar') self.assertEqual(cookie.get('secure'), 'SECURE') + self.assertEqual(cookie.get('quoted'), True) cookies = response._cookie_list() self.assertEqual(len(cookies), 1) @@ -108,9 +114,10 @@ response = self._makeOne() response.setCookie('foo', 'bar', secure='') cookie = response.cookies.get('foo', None) - self.assertEqual(len(cookie), 2) + self.assertEqual(len(cookie), 3) self.assertEqual(cookie.get('value'), 'bar') self.assertEqual(cookie.get('secure'), '') + self.assertEqual(cookie.get('quoted'), True) cookies = response._cookie_list() self.assertEqual(len(cookies), 1) @@ -129,9 +136,10 @@ response = self._makeOne() response.setCookie('foo', 'bar', http_only=True) cookie = response.cookies.get('foo', None) - self.assertEqual(len(cookie), 2) + self.assertEqual(len(cookie), 3) self.assertEqual(cookie.get('value'), 'bar') self.assertEqual(cookie.get('http_only'), True) + self.assertEqual(cookie.get('quoted'), True) cookie_list = response._cookie_list() self.assertEqual(len(cookie_list), 1) @@ -141,14 +149,27 @@ response = self._makeOne() response.setCookie('foo', 'bar', http_only=False) cookie = response.cookies.get('foo', None) - self.assertEqual(len(cookie), 2) + self.assertEqual(len(cookie), 3) self.assertEqual(cookie.get('value'), 'bar') self.assertEqual(cookie.get('http_only'), False) + self.assertEqual(cookie.get('quoted'), True) cookie_list = response._cookie_list() self.assertEqual(len(cookie_list), 1) self.assertEqual(cookie_list[0], 'Set-Cookie: foo="bar"') + def test_setCookie_unquoted(self): + response = self._makeOne() + response.setCookie('foo', 'bar', quoted=False) + cookie = response.cookies.get('foo', None) + self.assertEqual(len(cookie), 2) + self.assertEqual(cookie.get('value'), 'bar') + self.assertEqual(cookie.get('quoted'), False) + + cookie_list = response._cookie_list() + self.assertEqual(len(cookie_list), 1) + self.assertEqual(cookie_list[0], 'Set-Cookie: foo=bar') + def test_expireCookie1160(self): # Verify that the cookie is expired even if an expires kw arg is passed # http://zope.org/Collectors/Zope/1160 _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins