From 9c00678b69ec7276f76f61031527fd272164f803 Mon Sep 17 00:00:00 2001 From: fpeters <> Date: Sun, 7 Mar 2004 17:37:46 +0000 Subject: [PATCH] =?UTF-8?q?PIL=20n'arrive=20pas=20=C3=A0=20redimensionner?= =?UTF-8?q?=20certaines=20image.=20=20Par=20exemple:=20=20=20http://www.bx?= =?UTF-8?q?lug.be/uploadfiles/39?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- servers/UploadFilesServer/UploadFilesServer.py | 8 ++++++-- shared/common/faults.py | 8 ++++++++ shared/web/UploadFilesWeb.py | 7 +++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/servers/UploadFilesServer/UploadFilesServer.py b/servers/UploadFilesServer/UploadFilesServer.py index c61e9a3a..9ae2e263 100755 --- a/servers/UploadFilesServer/UploadFilesServer.py +++ b/servers/UploadFilesServer/UploadFilesServer.py @@ -91,6 +91,7 @@ register(AdminUploadFiles) class UploadFile(ObjectServerMixin, UploadFileCommon): def acquireNonCore(self, objectDirectoryPath = None, dataDirectoryPath = None, parentSlot = None): + self.properties = [] ObjectServerMixin.acquireNonCore( self, objectDirectoryPath = objectDirectoryPath, dataDirectoryPath = dataDirectoryPath, parentSlot = parentSlot) @@ -131,7 +132,7 @@ class UploadFile(ObjectServerMixin, UploadFileCommon): property.kind.isTranslatable = 0 property.kind.label = label self.values[name] = value - self.properties.append(property) + self.properties = self.properties[:] if self.isType('image') and PILImage and self.data: uploadFileFile = cStringIO.StringIO(self.data) @@ -344,7 +345,10 @@ class UploadFilesServer(UploadFilesCommonMixin, ObjectsServer): except IOError: pass else: - objectObject.thumbnail((width, height)) + try: + objectObject.thumbnail((width, height)) + except IOError: + raise faults.UnresizableImage() thumbnailFile = cStringIO.StringIO() objectObject.save( thumbnailFile, objectObject.format) diff --git a/shared/common/faults.py b/shared/common/faults.py index 8d8af398..90fa5e0e 100644 --- a/shared/common/faults.py +++ b/shared/common/faults.py @@ -119,6 +119,7 @@ faultCodeDuplicateSerial = 5004 faultCodeWrongToken = 5005 faultCodeDisabledAccount = 5006 +faultCodeUnresizableImage = 6000 Fault = xmlrpclib.Fault @@ -500,6 +501,13 @@ class DisabledAccount(BaseFault): return 'Disabled account' +class UnresizableImage(BaseFault): + faultCode = faultCodeUnresizableImage + + def makeFaultString(self): + return 'unresizable image' + + class UnknownStringDigest(BaseFault): faultCode = faultCodeUnknownStringDigest diff --git a/shared/web/UploadFilesWeb.py b/shared/web/UploadFilesWeb.py index b47d55de..0a21a582 100644 --- a/shared/web/UploadFilesWeb.py +++ b/shared/web/UploadFilesWeb.py @@ -204,7 +204,7 @@ class UploadFilesWeb(ObjectsWebMixin, UploadFilesProxy): id, ['modificationTime', 'dataFileName']) rememberObject(id) - if fileName and object.dataFileName != fileName: + if fileName and object.dataFileName != urllib.unquote(fileName): pageNotFound() if not fileName and object.dataFileName: uri = X.idUrl(id, 'download/%s' % object.dataFileName) @@ -284,7 +284,10 @@ class UploadFilesWeb(ObjectsWebMixin, UploadFilesProxy): height = int(height) except ValueError: height = 128 - object = self.getObjectThumbnail(id, width, height) + try: + object = self.getObjectThumbnail(id, width, height) + except faults.UnresizableImage: + return pageNotFound() # FIXME: why not HTTP_NOT_IMPLEMENTED rememberObject(id) req = context.getVar('req')