From 8b4f905bba3b8e5b3aab84fe0b00caf4908054d7 Mon Sep 17 00:00:00 2001
From: Nicolas Delaby <nicolas@nexedi.com>
Date: Mon, 13 Sep 2010 15:02:29 +0000
Subject: [PATCH] Get a new chance to have a successful conversion of File
 content by looking into portal_tranforms machinery. If the content_type of
 file is known by portal_transforms as supported input content_type, we can
 expect a successful conversion.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@38313 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/File.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/product/ERP5/Document/File.py b/product/ERP5/Document/File.py
index e1889f0199..de7218f631 100644
--- a/product/ERP5/Document/File.py
+++ b/product/ERP5/Document/File.py
@@ -268,6 +268,7 @@ class File(Document, CMFFile):
                     + [item[0] for item in temp_ods.getTargetFormatItemList()]\
                     + [item[0] for item in temp_odg.getTargetFormatItemList()]\
                     + [item[0] for item in temp_odb.getTargetFormatItemList()]
+    portal = self.getPortalObject()
     if content_type.startswith('text'):
       # We can wrap it into TextDocument
       from Products.ERP5Type.Document import newTempTextDocument
@@ -295,6 +296,20 @@ class File(Document, CMFFile):
                                          text_content=self.getData(),
                                          content_type=content_type)
       return temp_document.convert(format=format, **kw)
+    elif content_type in portal.portal_transforms._mtmap:
+      # Look if portal_transforms can handle the content_type
+      # of this File
+      mime_type = getToolByName(portal, 'mimetypes_registry').\
+                                            lookupExtension('name.%s' % format)
+      result = portal.portal_transforms.convertToData(mime_type, self.getData(),
+                                                      object=self, context=self,
+                                                      mimetype=content_type)
+      if not result:
+        raise ConversionError('File conversion error. '
+                              'portal_transforms failed to convert '\
+                              'from %s to %s; %r' % (content_type, mime_type,
+                                                     self))
+      return str(mime_type), result
     else:
       # We didn't find suitable wrapper to convert this File
       if format in VALID_TEXT_FORMAT_LIST:
-- 
2.30.9