Changeset 2354 for WAeUP_SRP/base


Ignore:
Timestamp:
12 Oct 2007, 11:21:52 (17 years ago)
Author:
joachim
Message:

make File Image Widget work with all filetypes

Location:
WAeUP_SRP/base
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/base/WAeUPTool.py

    r2351 r2354  
    696696        response = self.REQUEST.RESPONSE
    697697        #import pdb;pdb.set_trace()
     698        registry = getToolByName(self, 'mimetypes_registry')
     699        mimetype = str(registry.lookupExtension(path.lower()) or
     700                    registry.lookupExtension('file.bin'))
    698701        if os.path.exists(picture_path):
    699             response.setHeader('Content-type','image/jpeg')
     702            response.setHeader('Content-type',mimetype)
    700703            return open(picture_path).read()
    701704        picture_path = os.path.join(i_home,'import',path)
  • WAeUP_SRP/base/Widgets.py

    r2353 r2354  
    66from Globals import InitializeClass
    77from ZPublisher.HTTPRequest import FileUpload
     8from OFS.Image import cookId, File, Image
    89##from Products.CPSSchemas.Widget import CPSWidgetType
    910from Products.CMFCore.utils import getToolByName
     
    17961797    show_image = False
    17971798
     1799    def getStorageImageInfo(self,field_id):
     1800        info = {}
     1801        if self.id_field == "":
     1802            student_id = self.getStudentId()
     1803        else:
     1804            student_id = datastructure[self.id_field]
     1805        student_path = os.path.join(self.storage_path,
     1806                                    student_id)
     1807        image_name = ''
     1808        content_url = ''
     1809        current_filename = ''
     1810        for name in os.listdir(student_path):
     1811            if name.startswith(field_id):
     1812                image_name = name
     1813                break
     1814        if image_name:
     1815            info['image_name'] = image_name
     1816            info['content_url'] = os.path.join(self.portal_url(),
     1817                                   "viewimage",
     1818                                   self.path,
     1819                                   student_id,
     1820                                   image_name,
     1821                                   )
     1822            info['current_filename'] = os.path.join(student_id,
     1823                                                    image_name)
     1824            info['file_path'] = os.path.join(self.storage_path,
     1825                                             info['current_filename'])
     1826        return info
     1827           
    17981828    def getImageInfo(self, datastructure): ###(
    17991829        """Get the file info from the datastructure."""
    1800         #import pdb; pdb.set_trace()
    18011830        widget_id = self.getWidgetId()
    18021831        if  datastructure.has_key(widget_id):
     
    18041833            dm = datastructure.getDataModel()
    18051834            field_id = self.fields[0]
    1806             if self.id_field == "":
    1807                 student_id = self.getStudentId()
    1808             else:
    1809                 student_id = datastructure[self.id_field]
    1810             content_url = os.path.join(self.portal_url(),
    1811                                        "viewimage",
    1812                                        self.path,
    1813                                        student_id,
    1814                                        "%s_%s.jpg" % (self.getWidgetId(),student_id),
    1815                                        )
    1816             image_title = "%s_%s.jpg" % (widget_id,student_id)
    1817             current_filename = os.path.join(student_id,
    1818                                             image_title)
    1819             file_path = os.path.join(self.storage_path,
    1820                                      current_filename)
     1835            info = self.getStorageImageInfo(field_id)
    18211836        else:
    18221837            file_path = "XXX"
    1823             image_title = ""
     1838            title = ""
    18241839        # read the file from the filesystem
    1825         if not os.path.exists(file_path):
     1840        #import pdb; pdb.set_trace()
     1841        #if not os.path.exists(file_path):
     1842        if not info:
     1843            title = ""
    18261844            height = -1
    18271845            width = -1
     
    18361854            width = ''
    18371855        else:
    1838             image = open(file_path)
     1856            title = info['image_name']
     1857            current_filename = info['current_filename']
     1858            content_url = info['content_url']
     1859            image = open(info['file_path'])
    18391860            from OFS.Image import getImageInfo as getImageInfoOFS
    18401861            image.seek(0)
     
    18691890                    height = int(zoom * height)
    18701891                #import pdb;pdb.set_trace()
    1871         title = image_title
    18721892        image_info = {
    18731893            'empty_file': empty_file,
     
    18971917    ###)
    18981918
    1899     def checkFileName(self, filename, mimetype):
    1900         return '', {}
    1901         if mimetype and mimetype.startswith('image'):
    1902             return '', {}
    1903         return 'cpsschemas_err_image', {}
     1919    # def checkFileName(self, filename, mimetype):
     1920    #     return '', {}
     1921    #     if mimetype and mimetype.startswith('image'):
     1922    #         return '', {}
     1923    #     return 'cpsschemas_err_image', {}
    19041924
    19051925    def prepare(self, datastructure, **kw): ###(
     
    19351955        mimetype = None
    19361956        old_file = datamodel[field_id]
    1937         # if old_file is not None:
    1938         #     old_filename = old_file.title
    1939         # else:
    1940         #     old_filename = ''
    19411957        choice = datastructure[widget_id+'_choice']
    19421958        fileupload = datastructure[widget_id]
     
    19551971                return self.validateError('cpsschemas_err_required', {},
    19561972                                          datastructure)
    1957             ext ='jpg'
    1958             filename = "%s_%s.%s" % (self.getWidgetId(),
    1959                                      student_id,
    1960                                      ext)
     1973            info= self.getStorageImageInfo(field_id)
    19611974            # Remove the file in the filesystem
    1962             student_path = os.path.join(self.storage_path,student_id)
    1963             full_path = os.path.join(student_path, filename)
    1964             if os.path.exists(full_path):
    1965                 os.remove(full_path)
     1975            if info:
     1976                os.remove(info['file_path'])
    19661977            datamodel[field_id] = None
    19671978        elif choice == 'keep':
     
    19992010        # Find filename
    20002011        if is_upload and store:
    2001             ext ='jpg'
    2002             filename = "%s_%s.%s" % (self.getWidgetId(),
    2003                                      student_id,
    2004                                      ext)
     2012            filename = cookId('', '', fileupload)[0].strip()
     2013            base,ext = os.path.splitext(filename)
     2014            filename = "%s_%s%s" % (field_id,
     2015                                    student_id,
     2016                                    ext)
    20052017            datamodel[field_id] = filename
    20062018            registry = getToolByName(self, 'mimetypes_registry')
     
    20172029                os.mkdir(student_path)
    20182030            full_path = os.path.join(student_path, filename)
    2019             #import pdb;pdb.set_trace()
    20202031            pict = open(full_path,"w")
    20212032            fileupload.seek(0)
     
    20232034            pict.close()
    20242035        return True
    2025 
    2026 ###)
     2036    ###)
    20272037
    20282038    def render(self, mode, datastructure, **kw): ###(
Note: See TracChangeset for help on using the changeset viewer.