[Checkins] SVN: z3c.blobfile/trunk/src/z3c/blobfile/ Added a
browser package that enables file streaming. This feature
still needs testing.
Uwe Oestermeier
u.oestermeier at iwm-kmrc.de
Wed Nov 14 08:48:16 EST 2007
Log message for revision 81833:
Added a browser package that enables file streaming. This feature still needs testing.
Changed:
A z3c.blobfile/trunk/src/z3c/blobfile/browser/
A z3c.blobfile/trunk/src/z3c/blobfile/browser/__init__.py
A z3c.blobfile/trunk/src/z3c/blobfile/browser/configure.zcml
A z3c.blobfile/trunk/src/z3c/blobfile/browser/file.py
A z3c.blobfile/trunk/src/z3c/blobfile/browser/file_add.pt
A z3c.blobfile/trunk/src/z3c/blobfile/browser/file_icon.gif
A z3c.blobfile/trunk/src/z3c/blobfile/browser/file_upload.pt
A z3c.blobfile/trunk/src/z3c/blobfile/browser/image_edit.pt
A z3c.blobfile/trunk/src/z3c/blobfile/browser/image_icon.gif
A z3c.blobfile/trunk/src/z3c/blobfile/browser/preview.pt
U z3c.blobfile/trunk/src/z3c/blobfile/configure.zcml
U z3c.blobfile/trunk/src/z3c/blobfile/generations/__init__.py
U z3c.blobfile/trunk/src/z3c/blobfile/generations/evolve1.py
U z3c.blobfile/trunk/src/z3c/blobfile/overrides.zcml
-=-
Added: z3c.blobfile/trunk/src/z3c/blobfile/browser/__init__.py
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/browser/__init__.py (rev 0)
+++ z3c.blobfile/trunk/src/z3c/blobfile/browser/__init__.py 2007-11-14 13:48:15 UTC (rev 81833)
@@ -0,0 +1,19 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""File and Image content components
+
+$Id: __init__.py 26745 2004-07-24 04:02:18Z pruggera $
+"""
+__docformat__ = 'restructuredtext'
+
Added: z3c.blobfile/trunk/src/z3c/blobfile/browser/configure.zcml
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/browser/configure.zcml (rev 0)
+++ z3c.blobfile/trunk/src/z3c/blobfile/browser/configure.zcml 2007-11-14 13:48:15 UTC (rev 81833)
@@ -0,0 +1,123 @@
+<configure
+ xmlns="http://namespaces.zope.org/browser"
+ i18n_domain='zope'
+ >
+
+ <!-- directives for File -->
+
+ <form
+ name="edit.html"
+ for="z3c.blobfile.interfaces.IBlobFile"
+ schema="zope.app.file.browser.file.IFileEditForm"
+ label="Change a file"
+ permission="zope.ManageContent"
+ class="zope.app.file.browser.file.FileEdit"
+ >
+ </form>
+
+ <menuItem
+ menu="zmi_views" title="Edit"
+ for="z3c.blobfile.interfaces.IBlobFile"
+ action="edit.html"
+ filter="python:context.contentType.startswith('text/')"
+ permission="zope.ManageContent" />
+
+ <page
+ name="upload.html"
+ menu="zmi_views" title="Upload"
+ for="z3c.blobfile.interfaces.IBlobFile"
+ template="file_upload.pt"
+ class="zope.app.file.browser.file.FileUpload"
+ permission="zope.ManageContent"
+ />
+
+ <page
+ for="z3c.blobfile.interfaces.IBlobFile"
+ name="index.html"
+ permission="zope.View"
+ class="z3c.blobfile.browser.file.FileView"
+ attribute="show" />
+
+
+ <addMenuItem
+ class="z3c.blobfile.file.File"
+ title="File"
+ description="A File"
+ permission="zope.ManageContent"
+ view="zope.app.file.File"
+ />
+
+ <page
+ name="zope.app.file.File"
+ for="zope.app.container.interfaces.IAdding"
+ template="file_add.pt"
+ class="zope.app.file.browser.file.FileAdd"
+ permission="zope.ManageContent"
+ />
+
+ <icon
+ name="zmi_icon"
+ for="z3c.blobfile.interfaces.IBlobFile"
+ file="file_icon.gif"
+ />
+
+ <!-- Directives for Image -->
+
+ <editform
+ schema="z3c.blobfile.interfaces.IBlobImage"
+ name="upload.html"
+ menu="zmi_views" title="Upload"
+ label="Upload an image"
+ permission="zope.ManageContent"
+ class="zope.app.file.browser.image.ImageUpload"
+ template="image_edit.pt"
+ />
+
+ <page
+ name="index.html"
+ for="z3c.blobfile.interfaces.IBlobImage"
+ permission="zope.View"
+ allowed_attributes="__call__ tag"
+ class="zope.app.file.browser.image.ImageData"
+ />
+
+ <icon
+ name="zmi_icon"
+ for="z3c.blobfile.interfaces.IBlobImage"
+ file="image_icon.gif"
+ />
+
+ <addMenuItem
+ class="zope.app.file.image.Image"
+ title="Image"
+ description="An Image"
+ permission="zope.ManageContent"
+ view="zope.app.file.Image"
+ />
+
+ <addform
+ schema="z3c.blobfile.interfaces.IBlobImage"
+ label="Add an Image"
+ content_factory="z3c.blobfile.image.Image"
+ class="zope.app.file.browser.image.ImageAdd"
+ name="z3c.blobfile.image.Image"
+ permission="zope.ManageContent"
+ />
+
+ <page
+ for="z3c.blobfile.interfaces.IBlobFile"
+ name="preview.html"
+ template="preview.pt"
+ permission="zope.ManageContent"
+ menu="zmi_views" title="Preview"
+ />
+
+ <page
+ for="z3c.blobfile.interfaces.IBlobImage"
+ name="preview.html"
+ template="preview.pt"
+ permission="zope.ManageContent"
+ menu="zmi_views" title="Preview"
+ />
+
+</configure>
Added: z3c.blobfile/trunk/src/z3c/blobfile/browser/file.py
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/browser/file.py (rev 0)
+++ z3c.blobfile/trunk/src/z3c/blobfile/browser/file.py 2007-11-14 13:48:15 UTC (rev 81833)
@@ -0,0 +1,68 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""File views.
+
+$Id: file.py 81031 2007-10-24 14:08:53Z srichter $
+"""
+import zope.event
+from zope import lifecycleevent
+from zope.contenttype import guess_content_type
+from zope.publisher import contenttype
+from zope.schema import Text
+from zope.exceptions.interfaces import UserError
+
+from zope.app.file.file import File
+from zope.app.file.interfaces import IFile
+from zope.app.file.i18n import ZopeMessageFactory as _
+from zope.dublincore.interfaces import IZopeDublinCore
+import zope.datetime
+
+import time
+from datetime import datetime
+
+__docformat__ = 'restructuredtext'
+
+class FileView(object):
+
+ def show(self):
+ """Returns file handle for efficient streaming."""
+
+ if self.request is not None:
+ self.request.response.setHeader('Content-Type',
+ self.context.contentType)
+ self.request.response.setHeader('Content-Length',
+ self.context.getSize())
+ try:
+ modified = IZopeDublinCore(self.context).modified
+ except TypeError:
+ modified=None
+ if modified is None or not isinstance(modified,datetime):
+ return self.context.open()
+
+ header= self.request.getHeader('If-Modified-Since', None)
+ lmt = zope.datetime.time(modified.isoformat())
+ if header is not None:
+ header = header.split(';')[0]
+ try: mod_since=long(zope.datetime.time(header))
+ except: mod_since=None
+ if mod_since is not None:
+ if lmt <= mod_since:
+ self.request.response.setStatus(304)
+ return ''
+ self.request.response.setHeader('Last-Modified',
+ zope.datetime.rfc1123_date(lmt))
+
+ return self.context.open()
+
+
Added: z3c.blobfile/trunk/src/z3c/blobfile/browser/file_add.pt
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/browser/file_add.pt (rev 0)
+++ z3c.blobfile/trunk/src/z3c/blobfile/browser/file_add.pt 2007-11-14 13:48:15 UTC (rev 81833)
@@ -0,0 +1,62 @@
+<html metal:use-macro="context/@@standard_macros/page"
+ i18n:domain="zope">
+<body>
+<div metal:fill-slot="body">
+
+ <form action="." tal:attributes="action request/URL"
+ method="post" enctype="multipart/form-data">
+
+ <h3 i18n:translate="">Add a File (Blob)</h3>
+
+ <div tal:define="errors view/errors" tal:content="errors"
+ i18n:translate=""/>
+
+ <div class="row">
+ <div class="label">
+ <label for="field.contentType"
+ title="The content type identifies the type of data."
+ i18n:attributes="title" i18n:translate="">Content Type</label>
+ </div>
+ <div class="field">
+ <input class="textType"
+ id="field.contentType"
+ name="field.contentType"
+ size="20"
+ type="text"
+ value="" /></div>
+ </div>
+
+ <div class="row">
+ <div class="label">
+ <label for="field.data"
+ title="The actual content of the object."
+ i18n:attributes="title" i18n:translate="">Data</label>
+ </div>
+ <div class="field">
+ <input class="fileType"
+ id="field.data"
+ name="field.data"
+ size="20"
+ type="file" /></div>
+ </div>
+
+ <div class="row">
+ <div class="controls"><hr />
+
+ <input type="submit" i18n:attributes="value refresh-button"
+ value="Refresh" />
+ <input type="submit" i18n:attributes="value add-button"
+ value="Add" name="UPDATE_SUBMIT" />
+
+ <b i18n:translate="">Object Name</b>
+ <input type="text" name="add_input_name" value="" />
+
+ </div>
+ </div>
+
+ </form>
+
+</div>
+</body>
+
+</html>
Added: z3c.blobfile/trunk/src/z3c/blobfile/browser/file_icon.gif
===================================================================
(Binary files differ)
Property changes on: z3c.blobfile/trunk/src/z3c/blobfile/browser/file_icon.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: z3c.blobfile/trunk/src/z3c/blobfile/browser/file_upload.pt
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/browser/file_upload.pt (rev 0)
+++ z3c.blobfile/trunk/src/z3c/blobfile/browser/file_upload.pt 2007-11-14 13:48:15 UTC (rev 81833)
@@ -0,0 +1,61 @@
+<html metal:use-macro="context/@@standard_macros/view"
+ i18n:domain="zope">
+<body>
+<div metal:fill-slot="body">
+
+ <form action="." tal:attributes="action request/URL"
+ method="post" enctype="multipart/form-data">
+
+ <h3 i18n:translate="">Upload a file (blob)</h3>
+
+ <div tal:define="errors view/errors" tal:content="errors"
+ i18n:translate=""/>
+
+ <div class="row">
+ <div class="label">
+ <label for="field.contentType"
+ title="The content type identifies the type of data."
+ i18n:attributes="title" i18n:translate="">Content Type</label>
+ </div>
+ <div class="field">
+ <input class="textType"
+ id="field.contentType"
+ name="field.contentType"
+ size="20"
+ type="text"
+ value=""
+ tal:attributes="value context/contentType"/>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="label">
+ <label for="field.data"
+ title="The actual content of the object."
+ i18n:attributes="title" i18n:translate="">Data</label>
+ </div>
+ <div class="field">
+ <input class="fileType"
+ id="field.data"
+ name="field.data"
+ size="20"
+ type="file"/></div>
+ </div>
+
+ <div class="row">
+ <div class="controls"><hr />
+
+ <input type="submit" i18n:attributes="value refresh-button"
+ value="Refresh" />
+ <input type="submit" i18n:attributes="value update-button"
+ value="Update" name="UPDATE_SUBMIT" />
+
+ </div>
+ </div>
+
+ </form>
+
+</div>
+</body>
+
+</html>
Added: z3c.blobfile/trunk/src/z3c/blobfile/browser/image_edit.pt
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/browser/image_edit.pt (rev 0)
+++ z3c.blobfile/trunk/src/z3c/blobfile/browser/image_edit.pt 2007-11-14 13:48:15 UTC (rev 81833)
@@ -0,0 +1,24 @@
+<html metal:use-macro="context/@@standard_macros/view"
+ i18n:domain="zope">
+<body>
+<div metal:fill-slot="body">
+
+ <div metal:use-macro="view/generated_form/macros/body">
+
+ <form action=".">
+
+ <table metal:fill-slot="extra_top">
+ <tr>
+ <td i18n:translate="">Size</td>
+ <td tal:content="view/size"
+ i18n:translate="">103 x 45 pixels, 43KB</td>
+ </tr>
+ </table>
+
+ </form>
+
+ </div>
+</div>
+</body>
+
+</html>
Added: z3c.blobfile/trunk/src/z3c/blobfile/browser/image_icon.gif
===================================================================
(Binary files differ)
Property changes on: z3c.blobfile/trunk/src/z3c/blobfile/browser/image_icon.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: z3c.blobfile/trunk/src/z3c/blobfile/browser/preview.pt
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/browser/preview.pt (rev 0)
+++ z3c.blobfile/trunk/src/z3c/blobfile/browser/preview.pt 2007-11-14 13:48:15 UTC (rev 81833)
@@ -0,0 +1,9 @@
+<html metal:use-macro="context/@@standard_macros/view">
+<body>
+<div metal:fill-slot="body">
+
+ <iframe src="." height="500" width="100%"></iframe>
+
+</div>
+</body>
+</html>
Modified: z3c.blobfile/trunk/src/z3c/blobfile/configure.zcml
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/configure.zcml 2007-11-14 13:20:36 UTC (rev 81832)
+++ z3c.blobfile/trunk/src/z3c/blobfile/configure.zcml 2007-11-14 13:48:15 UTC (rev 81833)
@@ -43,7 +43,13 @@
interface="zope.annotation.interfaces.IAttributeAnnotatable"
/>
</class>
+
+ <utility
+ component=".generations.BlobFileSchemaManager"
+ name="z3c.blobfile"
+ />
+
<!-- `IStorage` utilities should be named with the dotted name
referencing the implementation.
-->
@@ -102,8 +108,4 @@
/>
-->
- <!-- include browser package -->
-
- <include package="zope.app.file.browser" />
-
</configure>
Modified: z3c.blobfile/trunk/src/z3c/blobfile/generations/__init__.py
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/generations/__init__.py 2007-11-14 13:20:36 UTC (rev 81832)
+++ z3c.blobfile/trunk/src/z3c/blobfile/generations/__init__.py 2007-11-14 13:48:15 UTC (rev 81833)
@@ -4,7 +4,7 @@
package_name = 'z3c.blobfile.generations'
-BebopPersonSchemaManager = SchemaManager(
+BlobFileSchemaManager = SchemaManager(
minimum_generation=1,
generation=2,
package_name=package_name)
Modified: z3c.blobfile/trunk/src/z3c/blobfile/generations/evolve1.py
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/generations/evolve1.py 2007-11-14 13:20:36 UTC (rev 81832)
+++ z3c.blobfile/trunk/src/z3c/blobfile/generations/evolve1.py 2007-11-14 13:48:15 UTC (rev 81833)
@@ -39,5 +39,4 @@
root = getRootFolder(context)
- evolveCatalog(root)
- evolvePerson(root)
+ evolveZopeAppFile(root)
Modified: z3c.blobfile/trunk/src/z3c/blobfile/overrides.zcml
===================================================================
--- z3c.blobfile/trunk/src/z3c/blobfile/overrides.zcml 2007-11-14 13:20:36 UTC (rev 81832)
+++ z3c.blobfile/trunk/src/z3c/blobfile/overrides.zcml 2007-11-14 13:48:15 UTC (rev 81833)
@@ -25,4 +25,9 @@
</class>
+ <!-- include browser package -->
+
+ <include package="z3c.blobfile.browser" />
+
+
</configure>
More information about the Checkins
mailing list