[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