[Erp5-report] r22400 - /erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jul 9 17:27:59 CEST 2008


Author: jerome
Date: Wed Jul  9 17:27:59 2008
New Revision: 22400

URL: http://svn.erp5.org?rev=22400&view=rev
Log:
replace FileUpload by their content, because they cannot be marshalled by xmlrpclib

Modified:
    erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py

Modified: erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py?rev=22400&r1=22399&r2=22400&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py (original)
+++ erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py Wed Jul  9 17:27:59 2008
@@ -28,6 +28,7 @@
 ##############################################################################
 
 from AccessControl import ClassSecurityInfo
+from ZPublisher.HTTPRequest import FileUpload
 from Globals import InitializeClass, DTMLFile
 from Products.ERP5Type.Tool.BaseTool import BaseTool
 from Products.ERP5Type import Permissions
@@ -306,6 +307,8 @@
     parameter_dict = self.REQUEST.form
     ## add client arguments
     self._updateParameterDictWithServerInfo(parameter_dict)
+    ## handle file upload
+    self._updateParameterDictWithFileUpload(parameter_dict)
     ## call remote method 
     try:
       method = getattr(witch_tool, distant_method)     
@@ -359,6 +362,17 @@
     ## add local ERP5 instance url
     parameter_dict['erp5_url'] = self.getPortalObject().absolute_url()
       
+  def _updateParameterDictWithFileUpload(self, parameter_dict):
+    """Updates parameter_dict to replace file upload with their file content,
+    encoded as XML-RPC Binary
+    """
+    for key, value in parameter_dict.items():
+      if isinstance(value, FileUpload):
+        pos = value.tell()
+        value.seek(0)
+        parameter_dict[key] = xmlrpclib.Binary(value.read())
+        value.seek(pos)
+
   def _importBT5FileData(self, bt5_filename, bt5_filedata):
     """ Import bt5 file content. """
     bt5_io = StringIO(bt5_filedata)




More information about the Erp5-report mailing list