[Testbot] Plone 5.0 - Python 2.7 - Build # 1339 - Still failing! - 2 failure(s)

jenkins at plone.org jenkins at plone.org
Fri Jan 31 05:47:07 UTC 2014


This commit violated the Plone Continous Integration rule "Don’t Check In on a Broken Build": https://buildoutcoredev.readthedocs.org/en/latest/continous-integration.html#dont-check-in-on-a-broken-build

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Plone 5.0 - Python 2.7 - Build # 1339 - Still Failing!
-------------------------------------------------------------------------------

http://jenkins.plone.org/job/plone-5.0-python-2.7/1339/


-------------------------------------------------------------------------------
CHANGES
-------------------------------------------------------------------------------

Repository: plone.app.widgets
Branch: refs/heads/master
Date: 2014-01-30T20:56:55-08:00
Author: Nathan Van Gheem (vangheem) <vangheem at gmail.com>
Commit: https://github.com/plone/plone.app.widgets/commit/7530b24f5f78741e815ab93e6c32d8f602686d24

handle zope2 file upload objects for dexterity

Files changed:
M CHANGES.rst
M plone/app/widgets/browser/file.py
M plone/app/widgets/configure.zcml
M plone/app/widgets/factories.py

diff --git a/CHANGES.rst b/CHANGES.rst
index 44b2575..e4810fd 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -7,7 +7,7 @@ Changelog
 - add support for the tus resumable file upload protocol
   [vangheem]
 
-- handle unicode filesnames for dexterity file uploads
+- handle unicode filenames for dexterity file uploads
   [vangheem]
 
 - just always default to using File objects for uploads that aren't images.
diff --git a/plone/app/widgets/browser/file.py b/plone/app/widgets/browser/file.py
index 702b3ad..fd8f3c9 100644
--- a/plone/app/widgets/browser/file.py
+++ b/plone/app/widgets/browser/file.py
@@ -1,4 +1,3 @@
-
 from Products.CMFCore.utils import getToolByName
 from Products.Five.browser import BrowserView
 
@@ -61,8 +60,17 @@ def _tus_int(val):
                 logger.warn('The TUS_TMP_FILE_DIR is not writable')
             else:
                 TUS_ENABLED = True
+                logger.info('tus file upload support is successfully '
+                            'configured')
+    except ImportError:
+        logger.warn('TUS_ENABLED is set; however, tus python package is '
+                    'not installed')
+else:
+    try:
+        import tus
     except ImportError:
-        pass
+        logger.warn('You have the tus python package installed but it is '
+                    'not configured for this plone client')
 
 
 class FileUploadView(BrowserView):
diff --git a/plone/app/widgets/configure.zcml b/plone/app/widgets/configure.zcml
index a6bee70..a0f0de6 100644
--- a/plone/app/widgets/configure.zcml
+++ b/plone/app/widgets/configure.zcml
@@ -142,7 +142,14 @@
   <configure zcml:condition="installed plone.app.dexterity">
     <include package="z3c.form" file="meta.zcml"/>
     <include package="z3c.form" />
+
     <adapter factory=".factories.DXFileFactory" />
+    <utility
+      name="ZPublisher.HTTPRequest.FileUpload"
+      provides="plone.namedfile.interfaces.IStorage"
+      factory=".factories.Zope2FileUploadStorable"
+      />
+
     <adapter factory=".dx.DXFieldPermissionChecker" />
     <adapter factory=".dx.DXAddViewFieldPermissionChecker" />
     <adapter factory=".dx.DXAddViewFieldPermissionChecker"
diff --git a/plone/app/widgets/factories.py b/plone/app/widgets/factories.py
index 1c29a1b..34b6484 100644
--- a/plone/app/widgets/factories.py
+++ b/plone/app/widgets/factories.py
@@ -17,9 +17,14 @@
 try:
     from plone.namedfile.file import NamedBlobImage
     from plone.namedfile.file import NamedBlobFile
+    from plone.namedfile.storages import MAXCHUNKSIZE
+    from plone.namedfile.interfaces import IStorage
 except ImportError:  # pragma: no cover
     # only for dext
-    pass  # pragma: no cover
+    from zope.interface import Interface
+
+    class IStorage(Interface):
+        pass
 from plone.i18n.normalizer.interfaces import IFileNameNormalizer
 from plone.app.widgets.interfaces import IATCTFileFactory, IDXFileFactory
 
@@ -81,6 +86,20 @@ def __call__(self, name, content_type, data):
         return obj
 
 
+class Zope2FileUploadStorable(object):
+    implements(IStorage)
+
+    def store(self, data, blob):
+        data.seek(0)
+
+        fp = blob.open('w')
+        block = data.read(MAXCHUNKSIZE)
+        while block:
+            fp.write(block)
+            block = data.read(MAXCHUNKSIZE)
+        fp.close()
+
+
 class DXFileFactory(object):
     """ Ripped out from above """
     implements(IDXFileFactory)




-------------------------------------------------------------------------------

-------------- next part --------------
A non-text attachment was scrubbed...
Name: CHANGES.log
Type: application/octet-stream
Size: 3835 bytes
Desc: not available
URL: <http://lists.plone.org/pipermail/plone-testbot/attachments/20140131/aee06499/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: build.log
Type: application/octet-stream
Size: 132125 bytes
Desc: not available
URL: <http://lists.plone.org/pipermail/plone-testbot/attachments/20140131/aee06499/attachment-0003.obj>


More information about the Testbot mailing list