Has this change been discussed?
I don't agree with it. Unicode strings aren't byte strings. File and
Image should only work with byte strings.
Code dealing with them should always know and assume that they use
str. Anything using unicode with them is broken or has done
insufficient input validation.
Please revert, unless you can convince me otherwise.
Florent
On 28 Jun 2006, at 13:24, Rocky Burt wrote:
Log message for revision 68876:
OFS Image: Image and File now both support simple unicode objects
for data (they function the same as strings for data).
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:20:16 UTC (rev
68875)
+++ Zope/branches/2.10/doc/CHANGES.txt 2006-06-28 11:24:05 UTC (rev
68876)
@@ -18,6 +18,9 @@
Bugs Fixed
+ - OFS Image: Image and File now both support simple unicode
objects
+for data (they function the same as strings for data).
+
- OFS Application: Updated deprecation warnings.
Support for '__ac_permissions__' and 'meta_types' will be
removed in
Zope 2.11, 'methods' support might remain longer.
Modified: Zope/branches/2.10/lib/python/OFS/Image.py
===
--- Zope/branches/2.10/lib/python/OFS/Image.py 2006-06-28 11:20:16
UTC (rev 68875)
+++ Zope/branches/2.10/lib/python/OFS/Image.py 2006-06-28 11:24:05
UTC (rev 68876)
@@ -43,7 +43,6 @@
from cgi import escape
import transaction
-StringType=type('')
manage_addFileForm=DTMLFile('dtml/imageAdd', globals
(),Kind='File',kind='file')
def manage_addFile(self,id,file='',title='',precondition='',
content_type='',
REQUEST=None):
@@ -231,7 +230,7 @@
RESPONSE.setStatus(206) # Partial content
data = self.data
-if type(data) is StringType:
+if isinstance(data, basestring):
RESPONSE.write(data[start:end])
return True
@@ -302,7 +301,7 @@
'Content-Range: bytes %d-%d/%d\r\n\r
\n' % (
start, end - 1, self.size))
-if type(data) is StringType:
+if isinstance(data, basestring):
RESPONSE.write(data[start:end])
else:
@@ -401,7 +400,7 @@
self.ZCacheable_set(None)
data=self.data
-if type(data) is type(''):
+if isinstance(data, basestring):
RESPONSE.setBase(None)
return data
@@ -481,7 +480,7 @@
if headers and headers.has_key('content-type'):
content_type=headers['content-type']
else:
-if type(body) is not type(''): body=body.data
+if not isinstance(body, basestring): body=body.data
content_type, enc=guess_content_type(
getattr(file, 'filename',id), body, content_type)
return content_type
@@ -490,7 +489,7 @@
n=1 16
-if type(file) is StringType:
+if isinstance(file, basestring):
size=len(file)
if size n: return file, size
# Big string: cut it into smaller chunks
@@ -617,7 +616,7 @@
return result
data = self.data
-if type(data) is type(''):
+if isinstance(data, basestring):
RESPONSE.setBase(None)
return data
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:20:16 UTC (rev 68875)
+++ Zope/branches/2.10/lib/python/OFS/tests/testFileAndImage.py
2006-06-28 11:24:05 UTC (rev 68876)
@@ -252,7 +252,15 @@
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
+
+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)
+
class ImageTests(FileTests):
data = open(filedata, 'rb').read()
content_type = 'image/gif'
@@ -285,7 +293,6 @@
verifyClass(WriteLockInterface, Image)
-
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(FileTests),
___
Checkins mailing list
[EMAIL PROTECTED]