From 54d5ed844a2b8b3baaf82bd7eea406152c30ca04 Mon Sep 17 00:00:00 2001
From: Jean-Paul Smets <jp@nexedi.com>
Date: Mon, 26 Feb 2007 16:54:46 +0000
Subject: [PATCH] conversion API changed

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@13052 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5OOo/Document/OOoDocument.py | 46 ++++++++++++++++---------
 1 file changed, 30 insertions(+), 16 deletions(-)

diff --git a/product/ERP5OOo/Document/OOoDocument.py b/product/ERP5OOo/Document/OOoDocument.py
index 485e0df69a..1e8ba1d871 100644
--- a/product/ERP5OOo/Document/OOoDocument.py
+++ b/product/ERP5OOo/Document/OOoDocument.py
@@ -26,16 +26,17 @@
 ##############################################################################
 
 import xmlrpclib
+from xmlrpclib import Fault
 import base64
 import re
 import zipfile
 import cStringIO
+import socket
 from DateTime import DateTime
 
 from AccessControl import ClassSecurityInfo
 from OFS.Image import Pdata
 from Products.CMFCore.utils import getToolByName
-from Products.CMFCore.WorkflowCore import WorkflowMethod
 from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
 from Products.ERP5Type.Message import Message
 from Products.ERP5Type.Cache import CachingMethod
@@ -87,6 +88,9 @@ class OOoDocument(File, ConversionCacheMixin):
     - to stored pure images (use Image for that)
 
     - as a general file conversion system (use portal_transforms for that)
+
+    TODO:
+    - better permissions
   """
   # CMF Type Definition
   meta_type = 'ERP5 OOo Document'
@@ -173,7 +177,7 @@ class OOoDocument(File, ConversionCacheMixin):
     adr = pref.getPreferredOoodocServerAddress()
     nr = pref.getPreferredOoodocServerPortNumber()
     if adr is None or nr is None:
-      raise Exception('you should set conversion server coordinates in preferences')
+      raise ConversionError('You should set conversion server coordinates in preferences')
     return adr, nr
 
   def _mkProxy(self):
@@ -184,30 +188,34 @@ class OOoDocument(File, ConversionCacheMixin):
     """
       code > 0 indicates a problem
       we distinguish data return from message by checking if it is a tuple
+
+      XXX - This is an error. UI translation is the responsability
+      of skins (scripts of page templates).
     """
     m = Message(domain='ui', message=msg)
     return (code, m)
 
   security.declareProtected(Permissions.View, 'convert')
-  def convertToBase(self, force=0, REQUEST=None):
+  def convertToBase(self, REQUEST=None):
     """
       Converts from the initial format to base format (ODF);
       communicates with the conversion server
       and gets converted file as well as metadata
     """
-    def doConvert(force):
-      if force == 0 and self.hasOOFile():
-        return self.returnMessage('OOo file is up do date', 1)
-      try:
-        self._convertToBase()
-      except Exception, e:
-        return self.returnMessage('Problem: %s' % (str(e) or 'undefined'), 2)
-      return self.returnMessage('converted to Open Document Format')
-    msg_ob = doConvert(force)
-    msg = str(msg_ob[1])
-    portal_workflow = getToolByName(self, 'portal_workflow')
-    portal_workflow.doActionFor(self, 'process', comment=msg)
-    return msg_ob
+    try:
+      self._convertToBase()
+      msg = 'Converted to Open Document Format.'
+      self.convertFile(comment=msg) # Invoke workflow method
+    except ConversionError, e:
+      msg = 'Problem: %s' % (str(e) or 'undefined.')
+      self.processFile(comment=msg)
+    except Fault, e:
+      msg = 'Problem: %s' % (repr(e) or 'undefined.')
+      self.processFile(comment=msg)
+    except socket.error, e:
+      msg = 'Problem: %s' % (repr(e) or 'undefined.')
+      self.processFile(comment=msg)
+    return msg
 
   security.declareProtected(Permissions.AccessContentsInformation,'getTargetFormatList')
   def getTargetFormatItemList(self):
@@ -239,6 +247,8 @@ class OOoDocument(File, ConversionCacheMixin):
   def reset(self):
     """
       make the object a non-converted one, as if it was brand new
+
+      XXX-JPS more explicit name needed
     """
     self.clearConversionCache()
     self.oo_data = None
@@ -252,6 +262,8 @@ class OOoDocument(File, ConversionCacheMixin):
     """
       Checks if the current document can be converted
       into the specified format.
+
+      XXX-JPS more explicit name needed
     """
     allowed = self.getTargetFormatItemList()
     if allowed is None: return False
@@ -469,6 +481,8 @@ class OOoDocument(File, ConversionCacheMixin):
 
       TODO:
         * support of images in html conversion (as subobjects for example)
+
+      XXX-JPS more explicit name needed for method
     """
     if not self.isAllowed(format):
       errstr = '%s format is not supported' % format
-- 
2.30.9