Commit 513bc037 authored by Rocky Burt's avatar Rocky Burt

OFS Image: Image and File now both support simple unicode objects for data...

OFS Image: Image and File now both support simple unicode objects for data (they function the same as strings for data).
parent 47dbd734
...@@ -18,6 +18,9 @@ Zope Changes ...@@ -18,6 +18,9 @@ Zope Changes
Bugs Fixed 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. - OFS Application: Updated deprecation warnings.
Support for '__ac_permissions__' and 'meta_types' will be removed in Support for '__ac_permissions__' and 'meta_types' will be removed in
Zope 2.11, 'methods' support might remain longer. Zope 2.11, 'methods' support might remain longer.
......
...@@ -43,7 +43,6 @@ from zExceptions import Redirect ...@@ -43,7 +43,6 @@ from zExceptions import Redirect
from cgi import escape from cgi import escape
import transaction import transaction
StringType=type('')
manage_addFileForm=DTMLFile('dtml/imageAdd', globals(),Kind='File',kind='file') manage_addFileForm=DTMLFile('dtml/imageAdd', globals(),Kind='File',kind='file')
def manage_addFile(self,id,file='',title='',precondition='', content_type='', def manage_addFile(self,id,file='',title='',precondition='', content_type='',
REQUEST=None): REQUEST=None):
...@@ -231,7 +230,7 @@ class File(Persistent, Implicit, PropertyManager, ...@@ -231,7 +230,7 @@ class File(Persistent, Implicit, PropertyManager,
RESPONSE.setStatus(206) # Partial content RESPONSE.setStatus(206) # Partial content
data = self.data data = self.data
if type(data) is StringType: if isinstance(data, basestring):
RESPONSE.write(data[start:end]) RESPONSE.write(data[start:end])
return True return True
...@@ -302,7 +301,7 @@ class File(Persistent, Implicit, PropertyManager, ...@@ -302,7 +301,7 @@ class File(Persistent, Implicit, PropertyManager,
'Content-Range: bytes %d-%d/%d\r\n\r\n' % ( 'Content-Range: bytes %d-%d/%d\r\n\r\n' % (
start, end - 1, self.size)) start, end - 1, self.size))
if type(data) is StringType: if isinstance(data, basestring):
RESPONSE.write(data[start:end]) RESPONSE.write(data[start:end])
else: else:
...@@ -401,7 +400,7 @@ class File(Persistent, Implicit, PropertyManager, ...@@ -401,7 +400,7 @@ class File(Persistent, Implicit, PropertyManager,
self.ZCacheable_set(None) self.ZCacheable_set(None)
data=self.data data=self.data
if type(data) is type(''): if isinstance(data, basestring):
RESPONSE.setBase(None) RESPONSE.setBase(None)
return data return data
...@@ -481,7 +480,7 @@ class File(Persistent, Implicit, PropertyManager, ...@@ -481,7 +480,7 @@ class File(Persistent, Implicit, PropertyManager,
if headers and headers.has_key('content-type'): if headers and headers.has_key('content-type'):
content_type=headers['content-type'] content_type=headers['content-type']
else: else:
if type(body) is not type(''): body=body.data if not isinstance(body, basestring): body=body.data
content_type, enc=guess_content_type( content_type, enc=guess_content_type(
getattr(file, 'filename',id), body, content_type) getattr(file, 'filename',id), body, content_type)
return content_type return content_type
...@@ -490,7 +489,7 @@ class File(Persistent, Implicit, PropertyManager, ...@@ -490,7 +489,7 @@ class File(Persistent, Implicit, PropertyManager,
n=1 << 16 n=1 << 16
if type(file) is StringType: if isinstance(file, basestring):
size=len(file) size=len(file)
if size < n: return file, size if size < n: return file, size
# Big string: cut it into smaller chunks # Big string: cut it into smaller chunks
...@@ -617,7 +616,7 @@ class File(Persistent, Implicit, PropertyManager, ...@@ -617,7 +616,7 @@ class File(Persistent, Implicit, PropertyManager,
return result return result
data = self.data data = self.data
if type(data) is type(''): if isinstance(data, basestring):
RESPONSE.setBase(None) RESPONSE.setBase(None)
return data return data
......
...@@ -252,7 +252,15 @@ class FileTests(unittest.TestCase): ...@@ -252,7 +252,15 @@ class FileTests(unittest.TestCase):
verifyClass(HTTPRangeInterface, File) verifyClass(HTTPRangeInterface, File)
verifyClass(WriteLockInterface, 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): class ImageTests(FileTests):
data = open(filedata, 'rb').read() data = open(filedata, 'rb').read()
content_type = 'image/gif' content_type = 'image/gif'
...@@ -285,7 +293,6 @@ class ImageTests(FileTests): ...@@ -285,7 +293,6 @@ class ImageTests(FileTests):
verifyClass(WriteLockInterface, Image) verifyClass(WriteLockInterface, Image)
def test_suite(): def test_suite():
return unittest.TestSuite(( return unittest.TestSuite((
unittest.makeSuite(FileTests), unittest.makeSuite(FileTests),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment