[Erp5-report] r24978 - /spec/mandriva/2008.0/erp5-SOAPSupport/SOAPSupport-0.6-nxd.patch

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Dec 24 08:30:56 CET 2008


Author: kazuhiko
Date: Wed Dec 24 08:30:56 2008
New Revision: 24978

URL: http://svn.erp5.org?rev=24978&view=rev
Log:
add a missing patch.

Added:
    spec/mandriva/2008.0/erp5-SOAPSupport/SOAPSupport-0.6-nxd.patch

Added: spec/mandriva/2008.0/erp5-SOAPSupport/SOAPSupport-0.6-nxd.patch
URL: http://svn.erp5.org/spec/mandriva/2008.0/erp5-SOAPSupport/SOAPSupport-0.6-nxd.patch?rev=24978&view=auto
==============================================================================
--- spec/mandriva/2008.0/erp5-SOAPSupport/SOAPSupport-0.6-nxd.patch (added)
+++ spec/mandriva/2008.0/erp5-SOAPSupport/SOAPSupport-0.6-nxd.patch [utf8] Wed Dec 24 08:30:56 2008
@@ -1,0 +1,180 @@
+diff -ruNa erp5-SOAPSupport.orig/SOAPSupport/HTTPRequest.py erp5-SOAPSupport/SOAPSupport/HTTPRequest.py
+--- erp5-SOAPSupport.orig/SOAPSupport/HTTPRequest.py	2005-08-03 14:04:54.000000000 +0200
++++ erp5-SOAPSupport/SOAPSupport/HTTPRequest.py	2005-10-17 10:20:34.000000000 +0200
+@@ -77,21 +77,24 @@
+                 if soap is None:
+                       import soap
+                 meth, self.args = soap.parse_input(fs.value)
+-                response = soap.response(response)
+-                response._soap11 = environ.has_key('HTTP_SOAPACTION')
+-                response._soap12 = (contentType == 'application/soap+xml')
+-                response._contentType = contentType
+-                response._method = meth
++                #ALEX : Here we bypass the SOAP Envelope creation by SOAPpy
++                # and do it by ourselves in the SOAP method in the ZODB
++
++                #ALEX response = soap.response(response)
++                #ALEX response._soap11 = environ.has_key('HTTP_SOAPACTION')
++                #ALEX response._soap12 = (contentType == 'application/soap+xml')
++                #ALEX response._contentType = contentType
++                #ALEX response._method = meth
+                 other['RESPONSE'] = self.response = response
+-                other['REQUEST_METHOD'] = ''
++                #ALEX other['REQUEST_METHOD'] = ''
+                 self.maybe_webdav_client = 0
+             # Hm, maybe it's an XML-RPC
+-            # check for a real XML-RPC methodCall !
+-            # This allows to post normal text/xml files to Zope !
+-            elif (contentType == 'text/xml' and method == 'POST' and fs.value.find('<methodCall>') > 0):
++            elif (fs.headers.has_key('content-type') and
++                'text/xml' in fs.headers['content-type'] and
++                method == 'POST'):
+                 # Ye haaa, XML-RPC!
+                 global xmlrpc
+-                if xmlrpc is None: from ZPublisher import xmlrpc
++                if xmlrpc is None: import xmlrpc
+                 meth, self.args = xmlrpc.parse_input(fs.value)
+                 response=xmlrpc.response(response)
+                 other['RESPONSE']=self.response=response
+@@ -105,7 +108,7 @@
+             CGI_name=isCGI_NAME
+             defaults={}
+             tainteddefaults={}
+-            converter=None
++            converter=seqf=None
+ 
+             for item in fslist:
+ 
+@@ -154,8 +157,10 @@
+                             converter_type = type_name
+                             flags=flags|CONVERTED
+                         elif type_name == 'list':
++                            seqf=list
+                             flags=flags|SEQUENCE
+                         elif type_name == 'tuple':
++                            seqf=tuple
+                             tuple_items[key]=1
+                             flags=flags|SEQUENCE
+                         elif (type_name == 'method' or type_name == 'action'):
+@@ -711,7 +716,20 @@
+             self._hacked_path=1
+ 
+ 
+-HTTPRequest.processInputs = processInputs
++#ALEX force iHotfix or Localizer to be loaded before we patch HTTPRequest if available
++try:
++    import Products.iHotfix
++    #ALEX : For this patch to work in conjunction with iHotfix,
++    # we replace the actual method instead of the iHotfix wrapper.
++    HTTPRequest.old_processInputs = processInputs
++except ImportError:
++    try:
++        import Products.Localizer
++        #ALEX : For this patch to work in conjunction with Localizer,
++        # we replace the actual method instead of the Localizer wrapper.
++        HTTPRequest.old_processInputs = processInputs
++    except ImportError:
++        HTTPRequest.processInputs = processInputs
+ 
+ from zLOG import LOG, INFO
+ 
+diff -ruNa erp5-SOAPSupport.orig/SOAPSupport/__init__.py erp5-SOAPSupport/SOAPSupport/__init__.py
+--- erp5-SOAPSupport.orig/SOAPSupport/__init__.py	2005-08-03 14:05:18.000000000 +0200
++++ erp5-SOAPSupport/SOAPSupport/__init__.py	2005-10-17 10:20:34.000000000 +0200
+@@ -36,43 +36,53 @@
+      getZopeVersion()[0:2] == (2,7) or
+      getZopeVersion()[0:2] == (2,8)):
+ 
+-	import HTTPRequest
++    import HTTPRequest
+ 
+-	from Products.PythonScripts.Utility import allow_module, allow_class 
++    from Products.PythonScripts.Utility import allow_module, allow_class
+ 
+-	allow_module('base64')
++    allow_module('base64')
+ 
+-	allow_module('SOAPpy')
+-	allow_module('SOAPpy.Types')
++    allow_module('SOAPpy')
++    allow_module('SOAPpy.Types')
++
++    #ALEX : Allow usage of SOAPpy Types classes instances
++    # to build a SOAP response.
++    # Note : as we decided to build SOAP messages from scratch,
++    # is this still usefull ?
++    import SOAPpy.Types
++    for type_name in dir(SOAPpy.Types):
++        type_class = getattr(SOAPpy.Types, type_name)
++        if type(type_class) == type(SOAPpy.Types.stringType):
++            allow_class(type_class)
+ 
+ 
+ try:
+ 
+-	from WSDLObject import WSDLObject, \
+-		manage_addWSDLObjectForm, manage_addWSDLObject, \
+-		ADD_WSDL_OBJECT_PERMISSION
+-	
+-	def initialize(context):
+-
+-		context.registerClass(
+-			WSDLObject,
+-			permission   = ADD_WSDL_OBJECT_PERMISSION,
+-			constructors = ( manage_addWSDLObjectForm, manage_addWSDLObject ),
+-			icon='icons/wsdlobject.gif',
+-			meta_type = WSDLObject.meta_type
+-			)
+-
+-		context.registerBaseClass(WSDLObject)
+-
+-		try:
+-			from Products.ZBabel import ZBabelTag
+-		except:
+-			import NoBabelTag
++    from WSDLObject import WSDLObject, \
++        manage_addWSDLObjectForm, manage_addWSDLObject, \
++        ADD_WSDL_OBJECT_PERMISSION
++
++    def initialize(context):
++
++        context.registerClass(
++            WSDLObject,
++            permission   = ADD_WSDL_OBJECT_PERMISSION,
++            constructors = ( manage_addWSDLObjectForm, manage_addWSDLObject ),
++            icon='icons/wsdlobject.gif',
++            meta_type = WSDLObject.meta_type
++            )
++
++        context.registerBaseClass(WSDLObject)
++
++        try:
++            from Products.ZBabel import ZBabelTag
++        except:
++            import NoBabelTag
+ 
+ 
+ except:
+-	
+-	import traceback
+-	traceback.print_exc()
+ 
+-#	vim:ts=4
++    import traceback
++    traceback.print_exc()
++
++#    vim:ts=4
+diff -ruNa erp5-SOAPSupport.orig/SOAPSupport/soap.py erp5-SOAPSupport/SOAPSupport/soap.py
+--- erp5-SOAPSupport.orig/SOAPSupport/soap.py	2005-10-14 20:15:02.000000000 +0200
++++ erp5-SOAPSupport/SOAPSupport/soap.py	2005-10-17 10:20:34.000000000 +0200
+@@ -26,7 +26,9 @@
+     """
+     body = parseSOAPRPC(data)
+     method = body._name
+-    params = tuple(body._aslist())
++    #ALEX : Here we prefer to get a structure of SOAP Types instead of just the data.
++    #ALEX params = tuple(body._aslist())
++    params = (body,)
+ 
+     # Translate '.' to '/' in meth to represent object traversal.
+     method = replace(method, '.', '/')




More information about the Erp5-report mailing list