Log message for revision 40954:
  fixes + more tests (Stefan Holek)
  

Changed:
  U   Zope/trunk/lib/python/ZPublisher/HTTPResponse.py
  U   Zope/trunk/lib/python/ZPublisher/tests/testHTTPResponse.py

-=-
Modified: Zope/trunk/lib/python/ZPublisher/HTTPResponse.py
===================================================================
--- Zope/trunk/lib/python/ZPublisher/HTTPResponse.py    2005-12-21 15:01:15 UTC 
(rev 40953)
+++ Zope/trunk/lib/python/ZPublisher/HTTPResponse.py    2005-12-21 15:03:12 UTC 
(rev 40954)
@@ -333,13 +333,18 @@
                 self.body = body
 
 
+        isHTML = self.isHTML(self.body)
         if not self.headers.has_key('content-type'):
-            isHTML = self.isHTML(self.body)
             if isHTML:
                 c = 'text/html; charset=%s' % default_encoding
             else:
                 c = 'text/plain; charset=%s' % default_encoding
             self.setHeader('content-type', c)
+        else:
+            c = self.headers['content-type']
+            if not 'charset=' in  c:
+                c = '%s; charset=%s' % (c, default_encoding)                
+                self.setHeader('content-type', c)
 
         # Some browsers interpret certain characters in Latin 1 as html
         # special characters. These cannot be removed by html_quote,

Modified: Zope/trunk/lib/python/ZPublisher/tests/testHTTPResponse.py
===================================================================
--- Zope/trunk/lib/python/ZPublisher/tests/testHTTPResponse.py  2005-12-21 
15:01:15 UTC (rev 40953)
+++ Zope/trunk/lib/python/ZPublisher/tests/testHTTPResponse.py  2005-12-21 
15:03:12 UTC (rev 40954)
@@ -74,7 +74,18 @@
         response.appendHeader('XXX', 'foo')
         self.assertEqual(response.headers.get('xxx'), 'bar,\n\tfoo')
 
+    def test_CharsetNoHeader(self):
+        response = self._makeOne(body='foo')
+        self.assertEqual(response.headers.get('content-type'), 'text/plain; 
charset=iso-8859-15')
 
+    def test_CharsetTextHeader(self):
+        response = self._makeOne(body='foo', headers={'content-type': 
'text/plain'})
+        self.assertEqual(response.headers.get('content-type'), 'text/plain; 
charset=iso-8859-15')
+
+    def test_CharsetApplicationHeader(self):
+        response = self._makeOne(body='foo', headers={'content-type': 
'application/foo'})
+        self.assertEqual(response.headers.get('content-type'), 
'application/foo; charset=iso-8859-15')
+
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(HTTPResponseTests, 'test'))

_______________________________________________
Zope-Checkins maillist  -  Zope-Checkins@zope.org
http://mail.zope.org/mailman/listinfo/zope-checkins

Reply via email to