--- XMLRpcTools/XMLRpcTools.py 2007/10/23 17:40:23 1.8 +++ XMLRpcTools/XMLRpcTools.py 2010/03/19 11:39:52 1.11 @@ -12,7 +12,7 @@ class XMLRpcServerProxy(SimpleItem): meta_type="XMLRpcServerProxy" - rpc_arg_expr='[^A-z0-9]' + rpc_no_arg_expr='[^A-z0-9]' manage_options= ( {'label':'Main Config','action':'mainConfigHTML'}, @@ -38,7 +38,7 @@ class XMLRpcServerProxy(SimpleItem): return pr - def eval(self,method,argument): + def eval(self,method,argument,outputUnicode=True): """do proxy request""" server=self.ServerProxy() @@ -46,7 +46,7 @@ class XMLRpcServerProxy(SimpleItem): # for XML-RPC methods only letters are allowed method=re.sub('[^A-z0-9_]','',method) # clean argument - argument=re.sub(self.rpc_arg_expr,'',argument) + argument=re.sub(self.rpc_no_arg_expr,'',argument) cmd="""server.%s('%s')"""%(method,argument) @@ -63,10 +63,12 @@ class XMLRpcServerProxy(SimpleItem): resp = server.getresponse() data = resp.read() #print "GOT: ", resp.status, ", ", resp.reason, " = ", data - - return data.decode('UTF-8') + if outputUnicode: + return data.decode('UTF-8') + else: + return data - def eval2(self,method,argument1,argument2): + def eval2(self,method,argument1,argument2,outputUnicode=True): """do proxy request""" server=self.ServerProxy() @@ -74,10 +76,10 @@ class XMLRpcServerProxy(SimpleItem): # for XML-RPC methods only letters are allowed method=re.sub('[^A-z0-9_]','',method) # clean argument - argument1=re.sub(self.rpc_arg_expr,'',argument1) - argument2=re.sub(self.rpc_arg_expr,'',argument2) + argument1=re.sub(self.rpc_no_arg_expr,'',argument1) + argument2=re.sub(self.rpc_no_arg_expr,'',argument2) - cmd="""server.%s('%s')"""%(method,argument1,argument2) + cmd="""server.%s('%s','%s')"""%(method,argument1,argument2) return eval(cmd) else: @@ -93,7 +95,10 @@ class XMLRpcServerProxy(SimpleItem): data = resp.read() #print "GOT: ", resp.status, ", ", resp.reason, " = ", data - return data.decode('UTF-8') + if outputUnicode: + return data.decode('UTF-8') + else: + return data def mainConfigHTML(self): @@ -101,7 +106,7 @@ class XMLRpcServerProxy(SimpleItem): pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageXMLRpcServerProxy.zpt')).__of__(self) return pt() - def mainConfig(self,serverUrl,use_xmlrpc=True,rpc_arg_expr=None,RESPONSE=None): + def mainConfig(self,serverUrl,use_xmlrpc=True,rpc_no_arg_expr=None,RESPONSE=None): """main config""" self.serverUrl=serverUrl @@ -113,31 +118,32 @@ class XMLRpcServerProxy(SimpleItem): self.use_xmlrpc=use_xmlrpc - if rpc_arg_expr is not None: - self.rpc_arg_expr = rpc_arg_expr + if rpc_no_arg_expr is not None: + self.rpc_no_arg_expr = rpc_no_arg_expr if RESPONSE: - RESPONSE.redirect("/manage_main") + RESPONSE.redirect("manage_main") def manage_addXMLRpcServerProxyForm(self): - """add the CXMLRpcServerProxy""" + """add the XMLRpcServerProxy""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addXMLRpcServerProxy.zpt')).__of__(self) return pt() -def manage_addXMLRpcServerProxy(self,id,serverUrl,use_xmlrpc=True,rpc_arg_expr=None,RESPONSE=None): - """add the basket""" - if use_xmlrpc and use_xmlrpc != "no": +def manage_addXMLRpcServerProxy(self,id,serverUrl,use_xmlrpc=True,rpc_no_arg_expr=None,RESPONSE=None): + """add the XMLRpcServerProxy""" + if use_xmlrpc is not None and use_xmlrpc != "no": use_xmlrpc = True else: use_xmlrpc = False - if rpc_arg_expr is not None: - self.rpc_arg_expr = rpc_arg_expr - ob=XMLRpcServerProxy(id,serverUrl,use_xmlrpc) + if rpc_no_arg_expr is not None: + ob.rpc_no_arg_expr = rpc_no_arg_expr + self._setObject(id, ob) if RESPONSE is not None: - RESPONSE.redirect('manage_main') \ No newline at end of file + RESPONSE.redirect('manage_main') + \ No newline at end of file