From 836f816f31545bad6676b8425110b21963c0a564 Mon Sep 17 00:00:00 2001
From: Nicolas Delaby <nicolas@nexedi.com>
Date: Fri, 11 Sep 2009 17:31:30 +0000
Subject: [PATCH] Use Conversion API. hasConversion, getConversion, ...

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@28985 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/Image.py | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/product/ERP5/Document/Image.py b/product/ERP5/Document/Image.py
index 4ecdbd2996..4671eb625c 100644
--- a/product/ERP5/Document/Image.py
+++ b/product/ERP5/Document/Image.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
@@ -310,6 +311,7 @@ class Image(File, OFSImage):
     """
     mime_type = getToolByName(self, 'mimetypes_registry').\
                                 lookupExtension('name.%s' % format)
+    mime_type = str(mime_type)
     src_mimetype = self.getContentType()
     content = '%s' % self.getData()
     if content is not None:
@@ -332,27 +334,32 @@ class Image(File, OFSImage):
   security.declareProtected(Permissions.ModifyPortalContent, 'convert')
   def convert(self, format, display=None, quality=75, resolution=None, frame=None, **kw):
     """
-    Implementation of conversion for PDF files
+    Implementation of conversion for Image files
     """
     if format in ('text', 'txt', 'html', 'base_html', 'stripped-html'):
-      try:
-        return self.getConversion(format=format)
-      except KeyError:
+      if not self.hasConversion(format=format):
         mime_type, data = self._convertToText(format)
+        data = aq_base(data)
         self.setConversion(data, mime=mime_type, format=format)
-        return (mime_type, aq_base(data))
+      else:
+        mime_type, data = self.getConversion(format=format)
+      return mime_type, data
     image_size = self.getSizeFromImageDisplay(display)
     if (display is not None or resolution is not None or quality != 75 or format != ''\
                             or frame is not None) and image_size:
-      try:
-        mime, image = self.getConversion(display=display, format=format,
-                                         quality=quality, resolution=resolution,
-                                         frame=frame, image_size=image_size)
-      except KeyError:
-        # Generate photo on-the-fly
+      if not self.hasConversion(display=display, format=format,
+                                quality=quality, resolution=resolution,
+                                frame=frame, image_size=image_size):
         mime, image = self._makeDisplayPhoto(display, format=format, quality=quality,
                                              resolution=resolution, frame=frame,
                                              image_size=image_size)
+        self.setConversion(image, mime, format=format, quality=quality,
+                           resolution=resolution, frame=frame,
+                           image_size=image_size)
+      else:
+        mime, image = self.getConversion(display=display, format=format,
+                                         quality=quality, resolution=resolution,
+                                         frame=frame, image_size=image_size)
       return mime, image.data
     return self.getContentType(), self.getData()
 
-- 
2.30.9