More on media assets
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1021 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
55c3137c4f
commit
f30caa3c14
2 changed files with 23 additions and 9 deletions
|
@ -155,14 +155,23 @@
|
|||
|
||||
<!-- document -->
|
||||
|
||||
<!--<zope:view
|
||||
type="zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
for="zope.schema.interfaces.IBytes"
|
||||
provides="zope.app.form.interfaces.IInputWidget"
|
||||
factory=".resource.DataWidget"
|
||||
permission="zope.Public"
|
||||
name="loops.resource.DataWidget"
|
||||
/>-->
|
||||
|
||||
<addform
|
||||
label="Add Document"
|
||||
name="AddLoopsDocument.html"
|
||||
schema="loops.interfaces.IDocument"
|
||||
fields="title data contentType"
|
||||
content_factory="loops.resource.Document"
|
||||
permission="zope.ManageContent"
|
||||
/>
|
||||
permission="zope.ManageContent" />
|
||||
|
||||
|
||||
<addMenuItem
|
||||
class="loops.resource.Document"
|
||||
|
@ -179,8 +188,7 @@
|
|||
fields="title data contentType"
|
||||
for="loops.interfaces.IDocument"
|
||||
permission="zope.ManageContent"
|
||||
menu="zmi_views" title="Edit"
|
||||
/>
|
||||
menu="zmi_views" title="Edit" />
|
||||
|
||||
<!-- media asset -->
|
||||
|
||||
|
@ -192,7 +200,7 @@
|
|||
content_factory="loops.resource.MediaAsset"
|
||||
permission="zope.ManageContent"
|
||||
/>
|
||||
|
||||
|
||||
<addMenuItem
|
||||
class="loops.resource.MediaAsset"
|
||||
title="Media Asset"
|
||||
|
@ -210,7 +218,7 @@
|
|||
permission="zope.ManageContent"
|
||||
menu="zmi_views" title="Edit"
|
||||
/>
|
||||
|
||||
|
||||
<!-- view manager -->
|
||||
|
||||
<addform
|
||||
|
|
12
resource.py
12
resource.py
|
@ -28,6 +28,7 @@ from zope.app.container.contained import Contained
|
|||
from zope.app.file.image import Image as BaseMediaAsset
|
||||
from zope.interface import implements
|
||||
from persistent import Persistent
|
||||
from cStringIO import StringIO
|
||||
from cybertools.relation.registry import getRelations
|
||||
|
||||
from interfaces import IResource, IDocument, IMediaAsset
|
||||
|
@ -45,7 +46,9 @@ class Resource(Contained, Persistent):
|
|||
title = property(getTitle, setTitle)
|
||||
|
||||
_contentType = ''
|
||||
def setContentType(self, contentType): self._contentType = contentType
|
||||
def setContentType(self, contentType):
|
||||
if contentType:
|
||||
self._contentType = contentType
|
||||
def getContentType(self): return self._contentType
|
||||
contentType = property(getContentType, setContentType)
|
||||
|
||||
|
@ -56,7 +59,7 @@ class Resource(Contained, Persistent):
|
|||
def __init__(self, title=u''):
|
||||
self.title = title
|
||||
|
||||
_size = 0
|
||||
_size = _width = _height = 0
|
||||
|
||||
|
||||
class Document(Resource):
|
||||
|
@ -78,13 +81,16 @@ class MediaAsset(Resource, BaseMediaAsset):
|
|||
self.title = title
|
||||
|
||||
def _setData(self, data):
|
||||
super(MediaAsset, self)._setData(data)
|
||||
dataFile = StringIO(data) # let File tear it into pieces
|
||||
super(MediaAsset, self)._setData(dataFile)
|
||||
if not self.contentType:
|
||||
self.guessContentType(data)
|
||||
|
||||
data = property(BaseMediaAsset._getData, _setData)
|
||||
|
||||
def guessContentType(self, data):
|
||||
if not isinstance(data, str): # seems to be a file object
|
||||
data = data.read(20)
|
||||
if data.startswith('%PDF'):
|
||||
self.contentType = 'application/pdf'
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue