+
+ def prepare_response(self, result, method=""):
+ """
+ convert result to a valid xmlrpc or soap response
+ """
+
+ if self.protocol == 'xmlrpclib':
+ #if not isinstance(result, SfaFault):
+ if not isinstance(result, Exception):
+ result = (result,)
+ response = xmlrpclib.dumps(result, methodresponse = True, encoding = self.encoding, allow_none = 1)
+ elif self.protocol == 'soap':
+ if isinstance(result, Exception):
+ result = faultParameter(NS.ENV_T + ":Server", "Method Failed", method)
+ result._setDetail("Fault %d: %s" % (result.faultCode, result.faultString))
+ else:
+ response = buildSOAP(kw = {'%sResponse' % method: {'Result': result}}, encoding = self.encoding)
+ else:
+ if isinstance(result, Exception):
+ raise result
+
+ return response