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 --> |   <!-- 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 |   <addform | ||||||
|       label="Add Document" |       label="Add Document" | ||||||
|       name="AddLoopsDocument.html" |       name="AddLoopsDocument.html" | ||||||
|       schema="loops.interfaces.IDocument" |       schema="loops.interfaces.IDocument" | ||||||
|       fields="title data contentType" |       fields="title data contentType" | ||||||
|       content_factory="loops.resource.Document" |       content_factory="loops.resource.Document" | ||||||
|       permission="zope.ManageContent" |       permission="zope.ManageContent" /> | ||||||
|       /> |    | ||||||
| 
 | 
 | ||||||
|   <addMenuItem |   <addMenuItem | ||||||
|       class="loops.resource.Document" |       class="loops.resource.Document" | ||||||
|  | @ -179,8 +188,7 @@ | ||||||
|       fields="title data contentType" |       fields="title data contentType" | ||||||
|       for="loops.interfaces.IDocument" |       for="loops.interfaces.IDocument" | ||||||
|       permission="zope.ManageContent" |       permission="zope.ManageContent" | ||||||
|       menu="zmi_views" title="Edit" |       menu="zmi_views" title="Edit" />       | ||||||
|       /> |  | ||||||
| 
 | 
 | ||||||
|   <!-- media asset --> |   <!-- media asset --> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										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.app.file.image import Image as BaseMediaAsset | ||||||
| from zope.interface import implements | from zope.interface import implements | ||||||
| from persistent import Persistent | from persistent import Persistent | ||||||
|  | from cStringIO import StringIO | ||||||
| from cybertools.relation.registry import getRelations | from cybertools.relation.registry import getRelations | ||||||
| 
 | 
 | ||||||
| from interfaces import IResource, IDocument, IMediaAsset | from interfaces import IResource, IDocument, IMediaAsset | ||||||
|  | @ -45,7 +46,9 @@ class Resource(Contained, Persistent): | ||||||
|     title = property(getTitle, setTitle) |     title = property(getTitle, setTitle) | ||||||
| 
 | 
 | ||||||
|     _contentType = '' |     _contentType = '' | ||||||
|     def setContentType(self, contentType): self._contentType = contentType |     def setContentType(self, contentType): | ||||||
|  |         if contentType: | ||||||
|  |             self._contentType = contentType | ||||||
|     def getContentType(self): return self._contentType |     def getContentType(self): return self._contentType | ||||||
|     contentType = property(getContentType, setContentType) |     contentType = property(getContentType, setContentType) | ||||||
| 
 | 
 | ||||||
|  | @ -56,7 +59,7 @@ class Resource(Contained, Persistent): | ||||||
|     def __init__(self, title=u''): |     def __init__(self, title=u''): | ||||||
|         self.title = title |         self.title = title | ||||||
| 
 | 
 | ||||||
|     _size = 0 |     _size = _width = _height = 0 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Document(Resource): | class Document(Resource): | ||||||
|  | @ -78,13 +81,16 @@ class MediaAsset(Resource, BaseMediaAsset): | ||||||
|         self.title = title |         self.title = title | ||||||
| 
 | 
 | ||||||
|     def _setData(self, data): |     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: |         if not self.contentType: | ||||||
|             self.guessContentType(data) |             self.guessContentType(data) | ||||||
| 
 | 
 | ||||||
|     data = property(BaseMediaAsset._getData, _setData) |     data = property(BaseMediaAsset._getData, _setData) | ||||||
| 
 | 
 | ||||||
|     def guessContentType(self, data): |     def guessContentType(self, data): | ||||||
|  |         if not isinstance(data, str): # seems to be a file object | ||||||
|  |             data = data.read(20) | ||||||
|         if data.startswith('%PDF'): |         if data.startswith('%PDF'): | ||||||
|             self.contentType = 'application/pdf' |             self.contentType = 'application/pdf' | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm