[Zope-Checkins] SVN: Zope/trunk/ OFS Image: Image and File updated
to use isinstance(data,
str) and raises TypeError upon encountering unicode objects.
Rocky Burt
rocky at serverzen.com
Wed Jun 28 08:50:35 EDT 2006
Log message for revision 68880:
OFS Image: Image and File updated to use isinstance(data, str) and raises TypeError upon encountering unicode objects.
Changed:
U Zope/trunk/doc/CHANGES.txt
U Zope/trunk/lib/python/OFS/Image.py
U Zope/trunk/lib/python/OFS/tests/testFileAndImage.py
-=-
Modified: Zope/trunk/doc/CHANGES.txt
===================================================================
--- Zope/trunk/doc/CHANGES.txt 2006-06-28 12:43:34 UTC (rev 68879)
+++ Zope/trunk/doc/CHANGES.txt 2006-06-28 12:50:34 UTC (rev 68880)
@@ -27,8 +27,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.
- Collector #2122: fixed missing is_proxying_match definition
in ZServer/HTTPServer
Modified: Zope/trunk/lib/python/OFS/Image.py
===================================================================
--- Zope/trunk/lib/python/OFS/Image.py 2006-06-28 12:43:34 UTC (rev 68879)
+++ Zope/trunk/lib/python/OFS/Image.py 2006-06-28 12:50:34 UTC (rev 68880)
@@ -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/trunk/lib/python/OFS/tests/testFileAndImage.py
===================================================================
--- Zope/trunk/lib/python/OFS/tests/testFileAndImage.py 2006-06-28 12:43:34 UTC (rev 68879)
+++ Zope/trunk/lib/python/OFS/tests/testFileAndImage.py 2006-06-28 12:50:34 UTC (rev 68880)
@@ -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'
More information about the Zope-Checkins
mailing list