Log message for revision 68879: OFS Image: Image and File updated to use isinstance(data, str) and raises TypeError upon encountering unicode objects.
Changed: U Zope/branches/2.10/doc/CHANGES.txt U Zope/branches/2.10/lib/python/OFS/Image.py U Zope/branches/2.10/lib/python/OFS/tests/testFileAndImage.py -=- Modified: Zope/branches/2.10/doc/CHANGES.txt =================================================================== --- Zope/branches/2.10/doc/CHANGES.txt 2006-06-28 11:40:37 UTC (rev 68878) +++ Zope/branches/2.10/doc/CHANGES.txt 2006-06-28 12:43:34 UTC (rev 68879) @@ -18,8 +18,8 @@ Bugs Fixed - - OFS Image: Image and File now both support simple unicode objects - for data (they function the same as strings for data). + - OFS Image: Image and File updated to use isinstance(data, str) + and raises TypeError upon encountering unicode objects. - OFS Application: Updated deprecation warnings. Support for '__ac_permissions__' and 'meta_types' will be removed in Modified: Zope/branches/2.10/lib/python/OFS/Image.py =================================================================== --- Zope/branches/2.10/lib/python/OFS/Image.py 2006-06-28 11:40:37 UTC (rev 68878) +++ Zope/branches/2.10/lib/python/OFS/Image.py 2006-06-28 12:43:34 UTC (rev 68879) @@ -230,7 +230,7 @@ RESPONSE.setStatus(206) # Partial content data = self.data - if isinstance(data, basestring): + if isinstance(data, str): RESPONSE.write(data[start:end]) return True @@ -301,7 +301,7 @@ 'Content-Range: bytes %d-%d/%d\r\n\r\n' % ( start, end - 1, self.size)) - if isinstance(data, basestring): + if isinstance(data, str): RESPONSE.write(data[start:end]) else: @@ -400,7 +400,7 @@ self.ZCacheable_set(None) data=self.data - if isinstance(data, basestring): + if isinstance(data, str): RESPONSE.setBase(None) return data @@ -427,6 +427,10 @@ security.declarePrivate('update_data') def update_data(self, data, content_type=None, size=None): + if isinstance(data, unicode): + raise TypeError('Data can only be str or file-like. ' + 'Unicode objects are expressly forbidden.') + if content_type is not None: self.content_type=content_type if size is None: size=len(data) self.size=size @@ -480,7 +484,7 @@ if headers and headers.has_key('content-type'): content_type=headers['content-type'] else: - if not isinstance(body, basestring): body=body.data + if not isinstance(body, str): body=body.data content_type, enc=guess_content_type( getattr(file, 'filename',id), body, content_type) return content_type @@ -489,7 +493,7 @@ n=1 << 16 - if isinstance(file, basestring): + if isinstance(file, str): size=len(file) if size < n: return file, size # Big string: cut it into smaller chunks @@ -616,7 +620,7 @@ return result data = self.data - if isinstance(data, basestring): + if isinstance(data, str): RESPONSE.setBase(None) return data @@ -776,6 +780,10 @@ security.declarePrivate('update_data') def update_data(self, data, content_type=None, size=None): + if isinstance(data, unicode): + raise TypeError('Data can only be str or file-like. ' + 'Unicode objects are expressly forbidden.') + if size is None: size=len(data) self.size=size Modified: Zope/branches/2.10/lib/python/OFS/tests/testFileAndImage.py =================================================================== --- Zope/branches/2.10/lib/python/OFS/tests/testFileAndImage.py 2006-06-28 11:40:37 UTC (rev 68878) +++ Zope/branches/2.10/lib/python/OFS/tests/testFileAndImage.py 2006-06-28 12:43:34 UTC (rev 68879) @@ -252,15 +252,12 @@ verifyClass(HTTPRangeInterface, File) verifyClass(WriteLockInterface, File) - def testUnicodeWithIndexHtml(self): - # Introduced to help test the fact that Image.py has been - # changed to be lenient towards any basestring type, not just str - + def testUnicode(self): val = u'some unicode string here' - self.file.manage_edit('foobar', 'text/plain', filedata=val) - s = self.file.index_html(self.app.REQUEST, self.app.REQUEST.RESPONSE) - self.assertEquals(s, val) + self.assertRaises(TypeError, self.file.manage_edit, + 'foobar', 'text/plain', filedata=val) + class ImageTests(FileTests): data = open(filedata, 'rb').read() content_type = 'image/gif' _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins