Déplacement pour eggification.
[Plinn.git] / File.py
diff --git a/File.py b/File.py
deleted file mode 100755 (executable)
index 53a9154..0000000
--- a/File.py
+++ /dev/null
@@ -1,239 +0,0 @@
-# -*- coding: utf-8 -*-
-#######################################################################################
-#   Plinn - http://plinn.org                                                          #
-#   Copyright (C) 2005-2007  Benoît PIN <benoit.pin@ensmp.fr>                         #
-#                                                                                     #
-#   This program is free software; you can redistribute it and/or                     #
-#   modify it under the terms of the GNU General Public License                       #
-#   as published by the Free Software Foundation; either version 2                    #
-#   of the License, or (at your option) any later version.                            #
-#                                                                                     #
-#   This program is distributed in the hope that it will be useful,                   #
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of                    #
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                     #
-#   GNU General Public License for more details.                                      #
-#                                                                                     #
-#   You should have received a copy of the GNU General Public License                 #
-#   along with this program; if not, write to the Free Software                       #
-#   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.   #
-#######################################################################################
-""" This module implements a portal-managed File class that's inherits of CMFDefault
-    File. If exists, portal_transforms is called to extract text content, and publish
-    attachments.
-
-
-
-"""
-
-from Globals import InitializeClass
-from AccessControl import ClassSecurityInfo
-import OFS
-from zope.component.factory import Factory
-
-from Products.CMFDefault.File import File as CMFFile
-from Products.Photo.blobbases import File as BlobFile
-from Products.CMFDefault.DublinCore import DefaultDublinCoreImpl
-from Products.CMFCore.permissions import View, ModifyPortalContent
-from Products.CMFCore.utils import getToolByName
-from hexagonit.swfheader import parse as parseswf
-
-class File(BlobFile, CMFFile) :
-    """ file class with portal_transforms support """
-    
-    security = ClassSecurityInfo()
-    
-    _properties = CMFFile._properties + ({'id':'orig_name', 'type':'string', 'mode':'w', 'label':"Original Name"},)
-    orig_name = ''
-
-    def __init__( self
-                , id
-                , title=''
-                , file=''
-                , content_type=''
-                , precondition=''
-                , subject=()
-                , description=''
-                , contributors=()
-                , effective_date=None
-                , expiration_date=None
-                , format=None
-                , language='en-US'
-                , rights=''
-                ):
-        self._setId(id)
-        if format is None:
-            format = self.content_type or 'application/octet-stream'
-        
-        DefaultDublinCoreImpl.__init__( self, title, subject, description
-                               , contributors, effective_date, expiration_date
-                               , format, language, rights )
-        BlobFile.__init__(self, id, title, file, content_type=content_type, precondition=precondition)
-
-
-    def __getattr__(self, name) :
-        try : return CMFFile.__getattr__(self, name)
-        except :
-            selfAttrs = self.__dict__
-            if selfAttrs.has_key('_v_transform_cache') :
-                cache = selfAttrs['_v_transform_cache']
-                cacheTuple = cache.get('text_html', None) # (time, value)
-                if cacheTuple :
-                    cacheData = cacheTuple[1]
-                
-                    subObDict = cacheData.getSubObjects()
-                    if subObDict.has_key(name) :
-                        fileOb = OFS.Image.File(name, name, subObDict[name])
-                        return fileOb
-                
-            raise AttributeError, name
-    
-    def manage_upload(self,file='',REQUEST=None):
-        ret = super(File, self).manage_upload(file=file, REQUEST=REQUEST)
-
-        orig_name = OFS.Image.cookId('', '', file)[0]
-        if orig_name :
-            self.orig_name = orig_name
-
-        if self.Format() == 'application/x-shockwave-flash' :
-            if file :
-                try :
-                    swfmetadata = parseswf(file)
-                except IOError :
-                    swfmetadata = {'width':600, 'height':600}
-
-            for name in ('width', 'height') :
-                value = swfmetadata[name]
-                if self.hasProperty(name) :
-                    self._updateProperty(name, value)
-                else :
-                    self.manage_addProperty(name, value, 'int')
-        self.reindexObject()
-        return ret
-        
-        
-    
-    security.declareProtected(ModifyPortalContent, 'edit')
-    def edit(self, precondition='', file=''):
-        orig_name = OFS.Image.cookId('', '', file)[0]
-        if orig_name :
-            self.orig_name = orig_name
-        CMFFile.edit(self, precondition=precondition, file=file)
-        if hasattr(self, '_v_transform_cache') :
-            del self._v_transform_cache
-    
-    
-    security.declareProtected(View, 'SearchableText')
-    def SearchableText(self) :
-        """ Return full text"""
-        baseSearchableText = CMFFile.SearchableText(self)
-        transformTool = getToolByName(self, 'portal_transforms', default=None)
-        if transformTool is None :
-            return baseSearchableText
-        else :
-            f = self.bdata.open()
-            orig = f.read()
-            datastream_text =  transformTool.convertTo('text/plain',
-                                                        orig,
-                                                        mimetype = self.content_type
-                                                        )
-            f.close()
-            full_text = ''
-            if datastream_text is not None :
-                full_text = datastream_text.getData()
-            
-            return baseSearchableText + full_text
-            
-    security.declareProtected(View, 'preview')
-    def preview(self) :
-        """Return HTML preview if it's possible or empty string """
-        transformTool = getToolByName(self, 'portal_transforms', default = None)
-        if transformTool is None :
-            return ''
-        else :
-            filename = self.getId().replace(' ', '_')
-            f = self.bdata.open()
-            orig = f.read()
-            datastream = transformTool.convertTo('text/html',
-                                                orig,
-                                                object=self,
-                                                mimetype = self.content_type,
-                                                filename = filename)
-            f.close()
-            if datastream is not None : return datastream.getData()
-            else : return ''
-
-    security.declareProtected(View, 'download')
-    def download(self, REQUEST, RESPONSE):
-        """Download this item.
-        
-        Calls OFS.Image.File.index_html to perform the actual transfer after
-        first setting Content-Disposition to suggest a filename.
-        
-        This method is deprecated, use the URL of this object itself. Because
-        the default view of a File object is to download, rather than view,
-        this method is obsolete. Also note that certain browsers do not deal
-        well with a Content-Disposition header.
-
-        """
-
-        RESPONSE.setHeader('Content-Disposition',
-                           'attachment; filename=%s' % (self.orig_name or self.getId()))
-        return OFS.Image.File.index_html(self, REQUEST, RESPONSE)
-    
-    security.declarePublic('getIcon')
-    def getIcon(self, relative_to_portal=0):
-        """ return icon corresponding to mime-type
-        """
-        regTool = getToolByName(self, 'mimetypes_registry', default=None)
-        if regTool :
-            f = self.bdata.open()
-            mime = regTool(f, mimetype=self.content_type)[2]
-            f.close()
-            return mime.icon_path
-        else :
-            return CMFFile.getIcon(self, relative_to_portal=relative_to_portal)
-
-
-InitializeClass(File)
-FileFactory = Factory(File)
-
-
-def addFile( dispatcher
-             , id
-             , title=''
-             , file=''
-             , content_type=''
-             , precondition=''
-             , subject=()
-             , description=''
-             , contributors=()
-             , effective_date=None
-             , expiration_date=None
-             , format='text/html'
-             , language=''
-             , rights=''
-             ):
-    """
-    Add a File
-    """
-
-    # cookId sets the id and title if they are not explicity specified
-    id, title = OFS.Image.cookId(id, title, file)
-
-    container = dispatcher.Destination()
-
-    # Instantiate the object and set its description.
-    fobj = File( id, title=title, file='', content_type=content_type,
-                 precondition=precondition, subject=subject, description=description,
-                 contributors=contributors, effective_date=effective_date,
-                 expiration_date=expiration_date, format=format,
-                 language=language, rights=rights
-                  )
-    
-    # Add the File instance to self
-    container._setObject(id, fobj)
-
-    # 'Upload' the file.  This is done now rather than in the
-    # constructor because the object is now in the ZODB and
-    # can span ZODB objects.
-    container._getOb(id).manage_upload(file)
\ No newline at end of file