[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