[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema. - made more explicit what the FileUpload field is
Yvo Schubbe
cvs-admin at zope.org
Mon Nov 25 11:01:05 CET 2013
Log message for revision 130360:
- made more explicit what the FileUpload field is
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py
U Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py 2013-11-25 09:54:25 UTC (rev 130359)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py 2013-11-25 10:01:04 UTC (rev 130360)
@@ -23,10 +23,12 @@
from OFS.Image import Pdata
from zope.component import getUtility
from zope.interface import implements
+from zope.publisher.browser import FileUpload as ztkFileUpload
from zope.schema import BytesLine
from zope.schema import Field
+from zope.schema.interfaces import IBytes
from zope.schema.interfaces import IBytesLine
-from zope.schema.interfaces import IField
+from ZPublisher.HTTPRequest import FileUpload as z2FileUpload
from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFDefault.utils import checkEmailAddress
@@ -141,9 +143,12 @@
return True
-class IFileUpload(IField):
+class IFileUpload(IBytes):
- """A field for file uploads.
+ """A special bytes field for file uploads.
+
+ This is a hack that allows to use the existing manage_upload code for
+ handling FileUpload objects. Might become obsolete in the long run.
"""
@@ -153,3 +158,5 @@
"""
implements(IFileUpload)
+
+ _type = ztkFileUpload, z2FileUpload, str
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt 2013-11-25 09:54:25 UTC (rev 130359)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt 2013-11-25 10:01:04 UTC (rev 130360)
@@ -10,7 +10,13 @@
... _properties=({'id':'foo_prop', 'type': 'string'},)
... foo_text = ''
... foo_bytes = ''
- ... foo_upload = ''
+ ... _foo_upload = ''
+ ... def _getUpload(self):
+ ... return self._foo_upload
+ ... def _setUpload(self, value):
+ ... value.seek(0)
+ ... self._foo_upload = value.read()
+ ... foo_upload = property(_getUpload, _setUpload)
... foo_choice = ''
... foo_datetime = None
... foo_set = ()
@@ -80,8 +86,14 @@
>>> adapter.foo_bytes == foo_bytes
True
+ >>> from StringIO import StringIO
+ >>> from ZPublisher.HTTPRequest import FileUpload
>>> foo_upload = 'f\xc3\xb6\xc3\xb6'
- >>> adapter.foo_upload = foo_upload
+ >>> class DummyFieldStorage(object):
+ ... file = StringIO(foo_upload)
+ ... filename = None
+ ... headers = None
+ >>> adapter.foo_upload = FileUpload(DummyFieldStorage())
>>> content.foo_upload
'f\xc3\xb6\xc3\xb6'
>>> adapter.foo_upload == foo_upload
More information about the checkins
mailing list